id/num1/num2/num3/name
есть index: num2 (int)
Нужно получить сначала строки с num2=5, а затем все остальные с лимитом 50
Самый простой (но какой-то колхозный) вижу через вариант через UNION ALL
SELECT `name` FROM `tab` WHERE num2=5
UNION ALL
SELECT `name` FROM `tab` WHERE num2!=5
LIMIT 50
Можно просто:
SELECT `name` FROM `tab` WHERE num2=5
UNION
SELECT `name` FROM `tab`
LIMIT 50
но тогда обязательно будет выполнятся второй запрос, а вероятность, что отработает первый очень высока, поэтому склоняюсь к первому.
Можно еще сделать сложный вложенный запрос через что то типа такого
...IF num2=5 tt=1 else tt=0 ... ORDER BY `tt` DESC...
но мне кажется слишком это учитывая, что запрос
SELECT `name` FROM `tab` WHERE num2=5 LIMIT 50может сразу дать всю необходимую выборку.
Можете что-то посоветовать?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.