mysql - 结合多个 MySQL UNION 查询进行优化

标签 mysql select query-optimization union

我必须组合这些多个 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

我怎样才能只用一个查询来做到这一点?

最佳答案

如果您希望摆脱 UNION,您可以使用带有 CASE 表达式的聚合查询来解码 marke

SELECT
    CASE
        WHEN a1 = 1 THEN 'Mercedes'
        WHEN a2 = 1 THEN 'BMW'
        WHEN a3 = 1 THEN 'Ford'
    END AS marke,
    COUNT(autos.id)
FROM autos
WHERE a1 = 1 OR a2 = 1 OR a3 = 1
GROUP BY a1, a2, a3

关于mysql - 结合多个 MySQL UNION 查询进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54205456/

相关文章:

sql - postgresql 聚合的聚合(sum of sum)

sql - 使用 PHP 显示 SQL 语句的部分结果

php - 最小化来自 webhook 回调的 MYSQL 连接

外部无法访问mysql

PHP 和 MySQL $_POST 安全和 md5() 散列函数

Php Form 不会将 mysql_query 发送到数据库

mysql - SQL-如何从另一个表中选择包含多个值的行

MySql 没有为少数查询选择正确的索引

sql-server - SQL Server索引使用问题

mysql - 桌面智能 - 查找查询