MySQL - Returning X number of each GROUP BY
In this query I specify which models of cars I want to return
(hard-coded). So the SQL below returns one record for each model:
SELECT
*
FROM
main
WHERE
(
(marka_name = 'SUBARU' AND model_name = 'IMPREZA' AND (kuzov =
'GC8' OR kuzov = 'GF8')) OR
(marka_name = 'MAZDA' AND model_name = 'RX-7' AND kuzov =
'FD3S') OR
(marka_name = 'MITSUBISHI' AND model_name = 'LANCER' AND
(kuzov = 'CN9A' OR kuzov = 'CP9A')) OR
(marka_name = 'NISSAN' AND model_name = 'SKYLINE' AND (kuzov =
'ER34' OR kuzov = 'BCNR33')) OR
(marka_name = 'NISSAN' AND model_name = 'SILVIA' AND kuzov =
'S14') OR
(marka_name = 'TOYOTA' AND model_name = 'CELICA' AND kuzov =
'ST205') OR
(marka_name = 'TOYOTA' AND model_name = 'ARISTO' AND kuzov =
'JZS161') OR
(marka_name = 'MITSUBISHI' AND model_name = 'DELICA' AND
(kuzov = 'PE8W' OR kuzov = 'PD8W' OR kuzov = 'PF8W'))
)
AND
(rate != 'RA' AND rate != 'RR' AND rate != 'A1' AND rate != 'A'
AND rate != 'R' AND rate >= '3')
AND
(mileage >= 0 AND mileage <= 150000)
AND
(year >= 1990 AND year <= 1998)
GROUP BY
model_name
ORDER BY
mileage ASC,
rate DESC
Now is it possible, without unions, to have this SQL return more than one
model specified by some field. Example:
GROUP BY
model_name
HAVING COUNT(model_name) = 2
ORDER BY
mileage ASC,
rate DESC
I know that HAVING COUNT doesn't make sense, but I need a way to specify
how many cars per model to return.
http://sqlfiddle.com/#!2/421e4/1/0
No comments:
Post a Comment