SQLite: ... КРОМЕ... ЗАКАЗАТЬ ПО СЛУЧАЙНОМУ ()
Этот запрос:
SELECT colour FROM ColourView EXCEPT SELECT colour FROM SkinColourExceptionsView WHERE race = 'Human' ORDER BY RANDOM() LIMIT 1
Создает следующее исключение: 1st ORDER BY term does not match any column in the result set
Тем не менее, изменение ORDER BY RANDOM()
в ORDER BY colour
способен выдавать результаты (отсортировано в алфавитном порядке по цвету, а не случайным образом). Следующее предполагает, что ORDER BY RANDOM() LIMIT 1
должно работать: выберите случайную строку из таблицы sqlite. Может кто-нибудь объяснить, почему мой запрос не работает?
1 ответ
В составном запросе термины ORDER BY должны соответствовать некоторому столбцу в наборе результатов.
Вы можете обойти это ограничение, переместив составной запрос в подзапрос:
SELECT colour
FROM (SELECT colour FROM ColourView
EXCEPT
SELECT colour FROM SkinColourExceptionsView WHERE race = 'Human')
ORDER BY random()
LIMIT 1;
В качестве альтернативы, перепишите запрос, чтобы использовать другой механизм фильтрации:
SELECT colour
FROM ColourView
WHERE colour NOT IN (SELECT colour
FROM SkinColourExceptionsView
WHERE race = 'Human')
ORDER BY random()
LIMIT 1;