[英]SQL group by id
如果我有一個像這樣的結果集
ID1 ID2
43918 804
43917 804
44047 805
44046 805
44045 805
44044 805
44048 805
45172 806
44298 807
44296 808
44297 808
44294 808
44295 808
44331 809
44330 809
44334 809
44333 809
44332 809
44323 810
如何將其限制為類似
ID1 ID2
43918 804
44047 805
45172 806
44298 807
44296 808
44331 809
44323 810
基本上,每個唯一ID2一個ID1。 列來自同一表。
select ID1,ID2
from table
where ID2 in (804, 805, 806, 807, 808, 809, 810);
select max(id1), id2
from table
group by id2
我假設你想要最大。 關鍵是要對id2列進行分組,並對id1執行某種聚合函數(最小,最大,總和,平均)
SELECT MIN(ID1), ID2 FROM Table GROUP BY ID2
這給出了您用作示例的結果集-每個ID2的最低ID1。 您可以使用其他函數代替MIN,以通過ID2值獲取其他有趣的值,具體的函數列表因數據庫產品而異。
不知道這是否是一種聰明的方法,但是您可以嵌套這樣的查詢
select
t1.ID2,
(select TOP 1 id1 from table where id2 = t1.id2 from table as t2) as ID1
from table as t1
where ID2 in (804,805,806,807,808,809,810);
TOP 1是特定於SQL Server的,如果您使用的是mysql / postgres,則需要選擇... LIMIT 1
使用分組依據,然后在ID1列上使用聚合函數
SELECT MAX(ID1) AS ID1, ID2
FROM TABLE
GROUP BY ID2
這將為您提供與ID2相關的最高ID1值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.