我有这样的场景。
ID| NAME| EMAIL
---|------|--------------|---
11| ROCKY| ROCKY@XYZ.COM
99| JAMES| JAMES@XYZ.COM
88| ROCKY| ROCKY@XYZ.COM
77| JAMES| JAMES@XYZ.COM
我的预期结果是
ID NAME EMAIL
99 ROCKY ROCKY@XYZ.COM
88 JAMES JAMES@XYZ.COM
请帮忙
答案 0 :(得分:2)
我认为您的预期结果有拼写错误。但我认为你想要的只是一个简单的group by
:
select name, email, max(id)
from yourtable
group by name, email
答案 1 :(得分:1)
假设您正在使用MSSQL,并且您的预期结果与您发布的结果完全相反,那么您将要使用GROUP BY子句:
SELECT MAX(ID), NAME, EMAIL FROM YourTable GROUP BY NAME, EMAIL
答案 2 :(得分:0)
由于你没有提供你的SQL语句,我只能猜到你想要做什么。
你试过吗?
ORDER BY ID desc
答案 3 :(得分:0)
Codeulike将是我的首选+1
但另一个选项是使用WITH TIES子句
Declare @YourTable table (ID int,NAME varchar(50),EMAIL varchar(50))
Insert Into @YourTable values
(11,'ROCKY','ROCKY@XYZ.COM'),
(99,'JAMES','JAMES@XYZ.COM'),
(88,'ROCKY','ROCKY@XYZ.COM'),
(77,'JAMES','JAMES@XYZ.COM')
Select Top 1 with Ties *
From @YourTable
Order By Row_Number() over (Partition By Name,EMail Order by ID Desc)
返回
ID NAME EMAIL
99 JAMES JAMES@XYZ.COM
88 ROCKY ROCKY@XYZ.COM