【发布时间】:2019-06-09 20:30:33
【问题描述】:
我必须将这些多个 UNION 查询结合起来......
SELECT 'Mercedes' AS marke, COUNT(autos.id) FROM autos WHERE a1=1
UNION
SELECT 'BMW' AS marke, COUNT(autos.id) FROM autos WHERE a2=1
UNION
SELECT 'Ford' AS marke, COUNT(autos.id) FROM autos WHERE a3=1
我怎样才能只用一个查询来做到这一点?
【问题讨论】:
-
是的,使用 CASE 表达式将 WHERE 子句中的条件转换为
marke值,然后再转换为GROUP BY marke。 ...但是为了迂腐,UNION 已经是一个组合查询的单个查询。 -
正常模式是说
COUNT(*)。说COUNT(x)具有不计算x IS NULL的“特征”;这似乎与您的情况无关。
标签: mysql select query-optimization union