Я хочу, чтобы получить все профили, которые первыми в определенном месте (ы):ORDER BY ... IN (...) ASC
SELECT * FROM profile
WHERE location IN ('a', 'b', 'c') OR isDefault=1
ORDER BY location IN ('a', 'b') DESC, -- put to the front if location in 'a','b'
isDefault DESC, -- for each of both groups, put default profiles before the others.
location ASC -- and sort each of the up to four groups by location.
Это бросает ошибку: «Неправильный синтаксис около ключевого слова" В'.". Если я удалю предложение порядка, результаты будут возвращены.
Что здесь не так?
Возможная проблема с вашим запросом является то, что, помимо того, что 'в' не допускаются в' ПОРЯДКА BY', что не будет никакого внутреннего родом мест, вы решили поставить «перед ». Это действительно то, чего вы желаете? _a_ и _b_ окажется в верхней части, но это может быть как _b_ и _a_. – Mackan
@Mackan 'location ASC' сортирует их, поэтому a всегда находится перед b (если isDefault одинаково для обоих), * even *, если я запрашиваю' ORDER BY location IN ('b', 'a') ', и это полностью предназначено. – Alexander
Верно, не знаю, о чем я думал, но это имело смысл, поскольку я думал об этом ;-) – Mackan