Необходимо выбрать 10 записей с самым высоким рейтингом из определённой категории:
SELECT * FROM `tbl` WHERE `category` = 1 ORDER BY `rating` DESC LIMIT 10;
При этом, если записей подпадающих под условие нету, либо их не достаточно, то выбрать записи с самым высоким рейтингом из любой категории. Фактически тот же запрос, но без блока WHERE.
В общем, должен быть такой алгоритм:
Если выборка с WHERE нам даёт 10 записей, то мы выбираем их и только их.
Если записей с учётом WHERE нету, то берём 10 записей из любых категорий.
Если с учётом WHERE мы можем получить только 4 записи, то берём их, а остальные 6 добиваем записями из любых категорий.
Но на выходе мы всегда должны получать 10 записей отсортированных по рейтингу.
Можно ли написать такое одним запросом?