Объединить несколько запросов MySQL UNION для оптимизации - PullRequest
0 голосов
/ 15 января 2019

Я должен объединить эти несколько запросов 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

Как я могу сделать это только с одним запросом?

1 Ответ

0 голосов
/ 16 января 2019

Если вы хотите избавиться от UNION s, вы можете использовать агрегированный запрос с выражением 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
...