我有一张这样的表:
id attr
1 A
2 A
3 C
4 C
5 D
6 F
我想要计算所有A的B(但不是C的D等等)。请注意我的表没有B。
所以我想要一个这样的命令:
SELECT count(attr=A, attr=B) FROM table;
或者这个:
SELECT count(*) FROM table GROUP_BY attr IN (A, B);
并获得:
attr count
A 2
B 0
我的实际表格大约有一千attr
秒。我想在他们的大约一百个左右做一个group_by-ish的事情。重要的是我得到某些attrs的零计数,并且我可以将attr与计数相关联。
我知道这是一个基本问题,如果之前有人问我,我也不会感到惊讶。我搜索过..但不管怎样我的道歉......
答案 0 :(得分:2)
SELECT T.attr,
COUNT(Y.id)
FROM (SELECT 'A' AS attr
UNION ALL
SELECT 'B') AS T
LEFT JOIN YourTable Y
ON Y.attr = T.attr
GROUP BY T.attr
答案 1 :(得分:1)
这应该适合你。
SELECT T.Attr,Count(A.ID)
FROM (
SELECT CONVERT('A',char) AS Attr
UNION
SELECT CONVERT('B',char) AS Attr
) AS T
LEFT JOIN MyTable AS A
ON T.Attr=MyTable.Attr
GROUP BY T.Attr
ORDER BY T.Attr;
转换部分可能没有必要,但在我的测试中是必要的。