请看下面的表格。假设第一个是 table1
和 table2
另一个。
我真的不知道该怎么办,任何人都可以帮助我如何使用 mysql 查询像下面的表一样计数吗?
它计算类型为“a”的“红色”有多少
谢谢
最佳答案
您需要使用 LEFT JOIN
相反 INNER JOIN
因为有可能 color
在另一个表上不存在。
SELECT a.id,
a.colour,
SUM(type = 'a') TypeA,
SUM(type = 'b') TypeB
FROM tableColors a
LEFT JOIN tableName b
ON a.ncolour = b.colour
GROUP BY a.id, a.colour
SUM(type = 'a')
是一个 mysql 特定的语法,它计算 bool 运算结果的总值。如果你想让它对 RDBMS 更友好,请使用 CASE
SELECT a.id,
a.colour,
SUM(CASE WHEN type = 'a' THEN 1 ELSE 0 END) TypeA,
SUM(CASE WHEN type = 'b' THEN 1 ELSE 0 END) TypeB
FROM tableColors a
LEFT JOIN tableName b
ON a.ncolour = b.colour
GROUP BY a.id, a.colour
关于Mysql统计选中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18962559/