查询以获得每种类型的最大ID

时间:2014-04-09 14:05:43

标签: c# sql sql-server

我需要从每种特定种类获得max 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。 我不想运行多个查询。 使用子查询和多个查询,我知道该怎么做。

我想知道如何只处理一个查询。

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分: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 :(得分:1)

您必须使用 group by kind

<强> Group by Clause

SELECT max(Id)
FROM X
WHERE KIND = 15 or KIND = 20
group by Kind
order by 1

SQL Fiddle

答案 2 :(得分: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

答案 3 :(得分:0)

SELECT max(Id), KIND
   FROM X
Group by KIND