简体   繁体   English

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

[英]Query to get max Id from each Kind

I need to get max X.Id from each Specific kind, Example: 我需要从每种特定种类中获取最大X.Id,例如:

Table: 表:

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

My query needs to get the Ids 2 and 4, because my kinds are 15 and 20, this is my current query: 我的查询需要获取ID 2和4,因为我的类型是15和20,所以这是我当前的查询:

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

But this query only returns id 4. I need 2 and 4, the max Id for each kind. 但是此查询仅返回id4。我需要2和4,每种类型的最大ID。 I don't want to run more than one query. 我不想运行多个查询。 With subqueries and more than one query I know how to do. 有了子查询和多个查询,我知道该怎么做。

I would like to know how to do with only one query. 我想知道如何只处理一个查询。

Can anyone help me? 谁能帮我?

You need to add GROUP BY clause: 您需要添加GROUP BY子句:

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

The result will be: 结果将是:

ID 
-----
2
4  

Suggestion 建议

You can use IN for simplicity: 为了简单起见,可以使用IN

SELECT max(Id) as ID
   FROM X
WHERE KIND IN (15,20)
GROUP BY KIND

You have to use group by kind 您必须按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 SQL小提琴

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
SELECT max(Id), KIND
   FROM X
Group by KIND

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM