请问这个SQL命令有什么问题?
"SELECT DISTINCT email_to FROM emails WHERE email_box='SENT' ORDER BY SUM(email_to)"
我有一张桌子"电子邮件"。 其中两个字段是" email_to" (包含电子邮件收件人地址字符串)和" email_box"如果电子邮件存储在" INBOX"," OUTBOX"或者" SENT"。
我现在希望得到所有" email_to",按照他们在桌子上出现的频率排序。
我不知道为什么我会得到"滥用汇总"错误。我还想问一下如何解决它。
答案 0 :(得分:5)
order by语句中的字段在select语句之后计算。这意味着它只能引用select语句中的字段。尝试:
SELECT email_to, count(*) as total_emails FROM emails WHERE email_box='SENT' group by email_to ORDER BY total_emails
在上面的查询中,order by语句能够使用字段" total_emails"来引用外观计数。
答案 1 :(得分:1)
这是您的查询:
SELECT DISTINCT email_to
FROM emails
WHERE email_box = 'SENT'
ORDER BY SUM(email_to);
SUM()
建议使用聚合查询,但这不是聚合。您可以使用group by
代替:
SELECT email_to
FROM emails
WHERE email_box = 'SENT'
GROUP BY email_to
ORDER BY SUM(email_to);
但是,我怀疑email_to
实际上是一个数字。如果您想按计数进行排序,请使用count()
:
SELECT email_to
FROM emails
WHERE email_box = 'SENT'
GROUP BY email_to
ORDER BY COUNT(*);