2014-04-09 77 views
0

我需要從每一個具體的實物獲得最大的X.Id獲得最大的編號,例如:查詢從各種

表:

Id | Kind 
--------- 
1 | 20 
2 | 20 
3 | 15 
4 | 15 
--------- 

我的查詢需要得到的ID 2和4,因爲我的品種是15和20,這是我當前的查詢:

SELECT max(Id) 
    FROM X 
WHERE KIND = 15 or KIND = 20 

但此查詢僅返回ID 4.我需要2和4,最大ID爲每一種。 我不想運行多個查詢。 使用子查詢和多個查詢我知道該怎麼做。

我想知道如何處理只有一個查詢。

任何人都可以幫助我嗎?

回答

2

您需要添加GROUP BY條款:

SELECT max(Id) as ID 
    FROM X 
WHERE KIND = 15 or KIND = 20 
GROUP BY KIND 

結果將是:

ID 
----- 
2 
4 

建議

可以使用IN爲了簡單:

SELECT max(Id) as ID 
    FROM X 
WHERE KIND IN (15,20) 
GROUP BY KIND 
1
Create table Test (Id int, Kind int) 
Insert Test(Id,Kind) Values (1, 20) 
Insert Test(Id,Kind) Values (2, 20) 
Insert Test(Id,Kind) Values (3, 15) 
Insert Test(Id,Kind) Values (4, 15) 
Insert Test(Id,Kind) Values (5, 10) 
Insert Test(Id,Kind) Values (6, 10) 

Select * from Test 

Select MAX(Id) from Test 
Where Kind in (20, 15) 
Group by Kind 

Select MAX(Id) from Test 
Group by Kind 
Having Kind in (20, 15) 

Drop Table Test 
+1

在哪裏過濾器按種類15和20? –

+0

如果它是一個計算的參數,那麼您應該將HAVING與Group By結合使用,或者如果它是關於常規列,則只需添加where條件即可。調整了代碼 – Andrew