【发布时间】: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 聚合时,使用DISTINCT和GROUP BY是没有意义的。示例数据和预期结果将帮助我们在这方面为您提供帮助。 -
假设
QueuedMessageId是表mail.QueuedMessage的主键(这似乎很有可能),那么 distinct 和 group by 在这里没有用处,因为单独的列总是唯一/不同的。您可以按照建议尝试MIN或搜索“first in group”以获取其他类似问题/解决方案 -
感谢你们的帮助。下面的答案解决了我的问题
标签: sql sql-server database distinct