当表中存在每个id的多行时,查询为每个id拉一行

时间:2014-11-06 21:57:10

标签: sql-server

我有一个包含电子邮件地址的表格,其中有些人列出了多个电子邮件地址。我想查询表格,只为每个人提取一个电子邮件地址。

列是:

ID

IndividualID

电子邮件

示例数据:

1 34 dave@gmail.com

2 65 bob@gmail.com

3 34 david@gmail.com

我想要的结果是(每个IndividualID只拉一行):

1 34 dave@gmail.com

2 65 bob@gmail.com

1 个答案:

答案 0 :(得分:4)

使用ROW_NUMBER()

DECLARE @sample TABLE (
    ID int,
    IndividualID int,
    Email varchar(128)
)

INSERT INTO @sample
VALUES 
(1, 34, 'dave@gmail.com'),
(2, 65, 'bob@gmail.com'),
(3, 34, 'david@gmail.com')

SELECT *
FROM (
    SELECT *, RN = ROW_NUMBER() OVER(PARTITION BY IndividualId ORDER BY ID)
    FROM @sample
) AS data
WHERE RN = 1