我想选择有a的行distinct email
,请参阅下面的示例表:
+----+---------+-------------------+-------------+
| id | title | email | commentname |
+----+---------+-------------------+-------------+
| 3 | test | rob@hotmail.com | rob |
| 4 | i agree | rob@hotmail.com | rob |
| 5 | its ok | rob@hotmail.com | rob |
| 6 | hey | rob@hotmail.com | rob |
| 7 | nice! | simon@hotmail.com | simon |
| 8 | yeah | john@hotmail.com | john |
+----+---------+-------------------+-------------+
Run Code Online (Sandbox Code Playgroud)
期望的结果是:
+----+-------+-------------------+-------------+
| id | title | email | commentname |
+----+-------+-------------------+-------------+
| 3 | test | rob@hotmail.com | rob |
| 7 | nice! | simon@hotmail.com | simon |
| 8 | yeah | john@hotmail.com | john |
+----+-------+-------------------+-------------+
Run Code Online (Sandbox Code Playgroud)
我不关心id
返回哪个列值的地方.什么是必需的SQL?
Tur*_*bot 92
TSQL中的快速版本
SELECT a.*
FROM emails a
INNER JOIN
(SELECT email,
MIN(id) as id
FROM emails
GROUP BY email
) AS b
ON a.email = b.email
AND a.id = b.id;
Run Code Online (Sandbox Code Playgroud)
Ada*_*son 32
我假设你的意思是你不关心哪一行来获得title
,id
和commentname
值(你有"抢"的所有行,但我不知道那其实是东西会被强制执行或不在您的数据模型中).如果是这样,那么您可以使用窗口函数返回给定电子邮件地址的第一行:
select
id,
title,
email,
commentname
from
(
select
*,
row_number() over (partition by email order by id) as RowNbr
from YourTable
) source
where RowNbr = 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
133129 次 |
最近记录: |