我正在尝试编写一个查询来计算有多少条消息,但没有运气。这些消息被分成几部分。同一消息的所有部分都具有相同的 ID。
这是我的表格“消息”
| Text | ID | CreatorID | Status |
Hello Wo.. 1234 Martin OK
rld! This.. 1234 Martin OK
is a test! 1234 Martin OK
WELCOME p.. 9999 Martin Error
eople to .. 9999 Martin Error
the party! 9999 Martin Error
我想获取以下信息:
Total count of messages with CreatorID 'Martin' - 2 messages.
Total count of messages with CreatorID 'Martin' and Status 'Error' = 1 message.
我尝试过多种方法,但似乎都不起作用
SELECT COUNT(*) from messages WHERE CreatorID = 'Martin' GROUP BY ID (expecting 2)
SELECT COUNT(*) from messages WHERE CreatorID = 'Martin' AND status = 'Error' GROUP BY ID (expecting 1)
最佳答案
您需要使用Count(Distinct ...)
而不是分组依据
:
SELECT COUNT(Distinct ID) from messages WHERE CreatorID = 'Martin'
SELECT COUNT(Distinct ID) from messages WHERE CreatorID = 'Martin' AND status = 'Error'
您可以进一步使用条件聚合将它们合并到单个查询中(利用 If()
函数):
SELECT COUNT(DISTINCT ID) AS total_messages,
COUNT(DISTINCT IF(status = 'Error', ID, NULL)) AS total_Error_messages
FROM messages
WHERE CreatorID = 'Martin'
关于php - SQL count(*) with group by 没有给我任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688505/