2016-08-05 3 views
0

У меня есть полиморфная таблица, которую нужно заказать, но столбец, который нужно использовать для заказа, зависит от поля таблицы type. Что-то вроде этого:Условный SQL ORDER BY

ORDER BY CASE WHEN type=FOO THEN (table.last_name, table.first_name) ELSE table.name END

Однако, это не работает, кто-то может мне точку в правильном направлении, я пытаюсь сказать (в psuedocode)

IF type is FOO sort by last_name, first_name ASC OTHERWISE sort by name ASC

+0

Возможно, вы имели в виду это: '(table.last_name, table.first_name)' – Nicarus

+0

Нет, я хочу, чтобы они упорядочивались по last_name then first_name. – TheDelChop

+0

Вы произвольно запросите заказ двумя полями _or_ one. Это не будет работать. – Nicarus

ответ

1

Могли быть вам нужен случай, для каждого столбца

ORDER BY CASE WHEN type=FOO THEN (table.last_name) ELSE table.name END, 
     CASE WHEN type=FOO THEN (table.first_name) ELSE null END 
1

вы должны указать его с двумя полями:

Смежные вопросы