SQL选择包含条件的最后记录列表

luc*_*asx 1 sql sql-server

我有下表

ID姓名CodSituation
1 John 1
2 Mary 2
3 Mary 3
4 Mary 4
5 John 5
6 John 2
7 Mary 1

我想为他们的最后一个条目是CodSituation = 2的所有用户选择名称,ID和CodSituation

在这些结果中,我将获得id 6作为Mary的最后一个条目是CodeSituation = 4如果不止一个用户有他们最新的CodSituation = 2我也想要它们.

Jon*_*han 8

[最终编辑]在看到本回答结尾处发布的内容后,我发现用户提出了错误的问题:

他们问的是"告诉我每个拥有CodSituation = 2"的人,当他们的意思是"向我展示最后一个在CodSituation字段中输入的用户= 2"

这是正确的查询:

select a.ID, a.Name, a.CodSituation
from table_name a
inner join (
    select Name, max(ID) as MaxID
    from table_name
    group by Name
) b on a.Name = b.Name and a.ID = b.MaxID 
where a.CodSituation = 2;
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://sqlfiddle.com/#!2/ a731d [END]

[这里是以前的查询,供参考]看起来像你只需要:

select * from table_name where CodSituation=2
Run Code Online (Sandbox Code Playgroud)

让所有有情况的人2

要使用mysql只获取最后一个条目:

select * from table_name where CodSituation=2 order by id desc limit 1
Run Code Online (Sandbox Code Playgroud)

要使用sql-server获取最后一个条目:

select top 1 * from table_name where CodSituation=2 order by ID desc;
Run Code Online (Sandbox Code Playgroud)

在这里查看一个工作示例:

http://sqlfiddle.com/#!6/022fb/4

[编辑]

OP提供了一个实际的数据集:

select Name from table_name where CodSituation=2 group by Name;
Run Code Online (Sandbox Code Playgroud)

这显示所有CodSituation为2的独特用户(每人一个条目)

http://sqlfiddle.com/#!3/be404/2