SQL group by後獲取其他欄位(多種方法)
阿新 • • 發佈:2019-02-15
最近幫朋友處理一批資料,將指定的列重複的資料拿出來。這些資料在excel裡。有10W條左右。由於EXCEL不好操作。就想著將資料匯入資料庫通過SQL語句來操作。
匯入資料庫成功了,但由於SQL不是很牛,所以查詢有些問題。
我用group by 把重複的拿掉,但還有個問題,大家都知道用group by的話,select 後面指定的欄位必須與group by後面的一致。group by 只有個別欄位,如果拿出其他未分組的欄位資訊呢?在網上搜了下,
總結如下:
使用了group by 之後,就要求select後面的欄位包含在group by 或聚合函式裡面,這時如果想讀取其它欄位則無法實現。
將你需要的欄位放進max或min函式中,max:支援字元型別、數字型別。select max(id) as id,username,password from users group by username,password order by id desc
或者用:
select * from
(select part from employee group by part) as t1
inner join
(select distinct englishname from employee where part in (select part from employee group by part )) as t2
on t1.part =t2.part
參考:
select v.p ,v.a,v.b,v.c,v.d,v.e,v.f,v.g,v.h,v.i,v.j,v.k,v.l,v.m,v.m,v.n,v.o from vegaga v right join ( select min(id) as id,a,b,c,d,e,f,g,h,n from vegaga where a is not null group by a,b,c,d,e,f,g,h,n ) as v1 on v1.id=v.id order by v.id