【问题标题】:How to get Distinct Email ID with muiltiple records where ID=@ID如何使用 ID=@ID 的多条记录获取不同的电子邮件 ID
【发布时间】:2017-02-13 07:37:58
【问题描述】:

我正在获取 ID 列表,我代表该 ID 获取记录列表,我将在图像中附加记录详细信息

正如您在图片中看到的,我收到了重复的电子邮件 ID,因此为了使电子邮件 ID 唯一,我使用了此查询 这是我的查询

 WITH cte AS
(   SELECT *, ROW_NUMBER() OVER (PARTITION BY Email ORDER BY ID Desc) AS rn
    FROM AlertsTbl
)
SELECT *
FROM cte
WHERE rn = 1

所以我通过这个获得了唯一的电子邮件 ID,但问题是如何传递在图像中选择的 ID 以显示只有唯一电子邮件地址的记录?

【问题讨论】:

  • 你能给我们展示一些样本和预期的结果吗?听起来像WHERE ID = @ID GROUP BY Email HAVING COUNT(1) = 1
  • 您想要具有唯一电子邮件的记录吗?
  • 是的,先生记录有唯一的电子邮件
  • SELECT * FROM AlertsTbl WHERE Email IN (SELECT Email FROM AlertsTbl GROUP BY Email HAVING COUNT(*) = 1)
  • 图片太小,我看不懂。

标签: sql sql-server email unique distinct


【解决方案1】:

希望,我正确理解了您的问题。

试图创建类似的场景。我认为下面的查询可能会有所帮助。

Sqlfiddle 链接 - http://sqlfiddle.com/#!6/8419b/1/0

WITH cte AS
(  
SELECT email ,
 id, ROW_NUMBER() OVER (PARTITION BY Email ORDER BY ID Desc) AS rn , 
 count(email) over (PARTITION BY Email) cnt
    FROM so_test
  )
  SELECT *
FROM cte
WHERE cnt = 1;

【讨论】:

  • 我应该如何在上面的查询中传递 ID
  • 对不起,我不明白。请解释你想说什么
  • 是的先生,我想代表附件中显示的 ID 获取唯一的电子邮件 ID。
  • 抱歉,图片看不清楚。您能否粘贴您的预期输出。它真的会帮助我和其他人更好地理解这个问题。
【解决方案2】:
SELECT * FROM AlertsTbl
WHERE Email IN (
SELECT Email
FROM AlertsTbl
GROUP BY Email
HAVING COUNT(*) = 1)

【讨论】:

    【解决方案3】:

    您的问题有点令人困惑。您想为个人 ID 获取不同的电子邮件 ID。但是您为多个 ID 存储了重复的电子邮件 ID。如果您通过一个 ID,那么您将获得一个电子邮件 ID。 如果您只想要不同的电子邮件 ID,那么您可以使用

    Select Distinct(EMail) FROM AlertsTbl
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多