【问题标题】:Select distinct data from SQL Server using 2 values使用 2 个值从 SQL Server 中选择不同的数据
【发布时间】:2021-03-24 11:35:26
【问题描述】:

我希望能够为我们使用的每个电子邮件模板从 queuedmessage 表中提取 1 行数据。当我在queuedmessageid 上使用 group by 时,我会取回所有记录。理想情况下,每个消息模板只需要一个queuedmessageid。这是我的代码。

select distinct(messagetemplateid), QueuedMessageId 
from mail.QueuedMessage
where messagesent = 1
group by messagetemplateid, QueuedMessageId

我希望数据库中的每个模板都返回 1,因此最多 250 行。相反,我要取回每个 messagetemplate 的所有数据。

【问题讨论】:

  • DISTINCT 不是函数,而是运算符。它影响整个数据集。此外,当您有 no 聚合时,使用 DISTINCTGROUP BY 是没有意义的。示例数据和预期结果将帮助我们在这方面为您提供帮助。
  • 假设 QueuedMessageId 是表 mail.QueuedMessage 的主键(这似乎很有可能),那么 distinct 和 group by 在这里没有用处,因为单独的列总是唯一/不同的。您可以按照建议尝试MIN 或搜索“first in group”以获取其他类似问题/解决方案
  • 感谢你们的帮助。下面的答案解决了我的问题

标签: sql sql-server database distinct


【解决方案1】:

DISTINCT 不是函数! SELECT DISTINCT 是一个子句。还有一个很少,很少与GROUP BY一起使用。

尝试聚合函数:

select messagetemplateid, min(QueuedMessageId)
from mail.QueuedMessage
where messagesent = 1
group by messagetemplateid;

【讨论】:

  • 谢谢,我现在明白了,它的工作方式也完全符合我的需要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 2015-02-02
  • 1970-01-01
  • 2014-04-10
相关资源
最近更新 更多