sql查詢-多條數據相同,取其中一條

(說明,參考的網上的文章,自己做了測試)

問題:

表1
學校 年級 班級 姓名 性別 年齡
1中 1 2班 張 男 20 --這個曲調
2中 3 1班 馬 男 17
1中 2 2班 李 女 16
2中 3 5班 張 男 15
2中 3 6班 李 女 18 -- 這個取掉

當姓名和性別相同的時候,取年齡最小的 一條記錄

查詢的結果是

學校 年級 班級 姓名 性別 年齡
2中 3 1班 馬 男 17
1中 2 2班 李 女 16
2中 3 5班 張 男 15

--------創建測試環境---------

declare  ta table (學校 varchar(10),年級 int,班級 varchar(10),姓名 varchar(10),性別 varchar(10),年齡 int)

create table ta(學校 varchar(10),年級 int,班級 varchar(10),姓名 varchar(10),性別 varchar(10),年齡 int)
insert into ta values('1中',     1,         '2班',   '張',     '男',       20)
insert into ta values('2中',     3,         '1班',   '馬',     '男',       17)
insert into ta values('1中',     2,         '2班',   '李',     '女',       16)
insert into ta values('2中',     3,         '5班',   '張',     '男',       15)
insert into ta values('2中',     3,         '6班',   '李',     '女',       18)

*******答案 一 (認爲非常好,簡單,易懂)********

select a.* from ta a
inner join
 (select 姓名,性別 , min(年齡) 年齡 from ta group by 姓名,性別) b
on a.姓名 = b.姓名 and a.性別 = b.性別 and a.年齡 = b.年齡 order by a.學校

查詢結果

sql查詢-多條數據相同,取其中一條

*********答案二(原來 having還可以這樣啊)*******

select *  from  ta t   
group by 學校,年級,班級,姓名,性別,年齡
having
    年齡=(select min(年齡) from ta where 姓名 = t.姓名 and 性別 = t.性別)
order by 班級

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章