Ответ 1
Использование:
ORDER BY CASE color
WHEN 'YELLOW' THEN 1
WHEN 'RED' THEN 3
ELSE 2
END, name
У меня есть столбец color
в таблице MySQL, тип которого ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK')
, а другой столбец name
, который имеет тип VARCHAR(30)
.
Я хотел бы получить все строки таблицы в следующем порядке:
YELLOW
строки, отсортированные по name
RED
строки последние, отсортированные по name
name
Можно ли сделать такой вид в 1 запросе?
Использование:
ORDER BY CASE color
WHEN 'YELLOW' THEN 1
WHEN 'RED' THEN 3
ELSE 2
END, name
Это отлично работает с mysql. Но для h2 DB это приводит к ошибке Причина: org.h2.jdbc.JdbcSQLException: упорядочить по выражению "CASEWHEN ((цвет =" ЖЕЛТЫЙ "), 1, CASEWHEN ((цвет =" RED "), 3))" должно быть в списке результатов в этом случае; Оператор SQL:
Чтобы избежать ошибки, добавьте stmt "CASEWHEN ((цвет =" ЖЕЛТЫЙ "), 1, CASEWHEN ((цвет =" RED "), 3))" в предложении select.