SQL 查找重复记录的最大值
SQL to find highest value for repeated records
我有这样的场景。
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
请帮忙
我认为您的预期结果有错字。但我认为你想要的是一个简单的 group by
:
select name, email, max(id)
from yourtable
group by name, email
由于您没有提供 SQL 声明,我只能猜测您要做什么。
你尝试了吗?
ORDER BY ID desc
假设您使用的是 MSSQL,并且您的预期结果与您发布的结果完全相反,您将需要使用 GROUP BY 子句:
SELECT MAX(ID), NAME, EMAIL FROM YourTable GROUP BY NAME, EMAIL
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)
Returns
ID NAME EMAIL
99 JAMES JAMES@XYZ.COM
88 ROCKY ROCKY@XYZ.COM
我有这样的场景。
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
请帮忙
我认为您的预期结果有错字。但我认为你想要的是一个简单的 group by
:
select name, email, max(id)
from yourtable
group by name, email
由于您没有提供 SQL 声明,我只能猜测您要做什么。
你尝试了吗?
ORDER BY ID desc
假设您使用的是 MSSQL,并且您的预期结果与您发布的结果完全相反,您将需要使用 GROUP BY 子句:
SELECT MAX(ID), NAME, EMAIL FROM YourTable GROUP BY NAME, EMAIL
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)
Returns
ID NAME EMAIL
99 JAMES JAMES@XYZ.COM
88 ROCKY ROCKY@XYZ.COM