我的表格内容:
id aid
----------
1 1
2 2
3 2
4 4
5 4
我的sql:从帮助(1,2,3,4)援助
的表中选择计数(*)结果:
count(*)
----------
1
2
2
我想结果:
count(*)
----------
1
2
0
2
当援助是1,2,3,4时我想要计数结果。我应该使用什么SQL?感谢帮助。 (我使用MySQL)
答案 0 :(得分:1)
-- your data
DECLARE @Data TABLE (Id int, Aid int)
INSERT INTO @Data VALUES
(1,1),
(2,2),
(3,2),
(4,4),
(5,4);
DECLARE @Relevant TABLE (Id int )
INSERT INTO @Relevant VALUES (1),(2),(3),(4);
-- the query
SELECT Relevant.Id, COUNT(Data.Aid)
FROM @Data Data
RIGHT JOIN @Relevant Relevant ON Data.Aid = Relevant.Id
GROUP BY Data.Aid, Relevant.Id
答案 1 :(得分:0)
明确陈述的时间: - 数据不能“神奇地出现”,它需要存在于某处才能显示在输出中。
这与您希望0
aid = 3
的计数相关。由于没有aid = 3
的记录,因此无法计算。它的数据不存在,因此永远不会出现在输出中。所以我们需要强迫它存在。
如果您有一个列出所有aid
个实体的表格,那么使用LEFT JOIN
很容易... ...
SELECT
aid.id,
COUNT(yourDataTable.aid) AS data_count
FROM
aid
LEFT JOIN
yourDataTable
ON aid.id = yourDataTable.aid
WHERE
aid.id IN (1,2,3,4)
GROUP BY
aid.id
(COUNT(yourDataTable.aid)
不计算字段为NULL
的记录。因此3
现在存在,COUNT()
可以返回0
。)
答案 2 :(得分:0)
希望这有帮助
SELECT COLUMN_VALUE, COUNT(BT.AID)
FROM SO_BUFFER_TABLE_15 BT, TABLE(SYS.DBMS_DEBUG_VC2COLl(1, 2, 3, 4))
WHERE BT.AID(+) = COLUMN_VALUE
GROUP BY COLUMN_VALUE
ORDER BY COLUMN_VALUE