有没有办法让MySQL将多个查询合并到同一个表中,以便在自己的行中获得不同的结果?

jnb*_*bdz 0 mysql sql performance

这是我的查询:

SELECT COUNT(a.rating_id), COUNT(b.rating_id), COUNT(c.rating_id)
FROM wp_ratings a
LEFT JOIN wp_ratings b
LEFT JOIN wp_ratings c
WHERE a.rating_rating <= '5' AND a.rating_rating >= '4'
AND b.rating_rating <= '4' AND b.rating_rating >= '3'
AND c.rating_rating <= '3' AND c.rating_rating >= '0'
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误.我认为我的查询非常自我解释.我只是不想这样做:

SELECT COUNT(*) FROM wp_ratings WHERE rating_rating <= ‘5' AND rating_rating >= ‘4'
SELECT COUNT(*) FROM wp_ratings WHERE rating_rating <= ‘4' AND rating_rating >= ‘3'
SELECT COUNT(*) FROM wp_ratings WHERE rating_rating <= ‘3' AND rating_rating >= ‘0’
Run Code Online (Sandbox Code Playgroud)

我试图获得尽可能快的查询.

那么有没有办法利用MySQL将多个查询合并到同一个表中以获得自己行中的不同结果?

UPDATE

当我做EXPLAIN时,我看到MySQL扫描表3次,该表有15 000行,因此乘以15 000,你得到45 000行扫描.如果可能的话,我想把它降到15 000.

Gho*_*ler 5

SELECT
SUM(IF(rating_rating <= 5 AND rating_rating >= 4, 1, 0)),
SUM(IF(rating_rating <= 4 AND rating_rating >= 3, 1, 0)),
SUM(IF(rating_rating <= 3 AND rating_rating >= 0, 1, 0))
FROM wp_ratings
Run Code Online (Sandbox Code Playgroud)

只需使用SUM而不是COUNT多次.然后,您只能"计算"您想要计算的数量.