条件SQL ORDER BY

时间:2016-08-05 19:36:24

标签: mysql sql postgresql

我有一个需要排序的多态表,但用于排序的列取决于表的type字段。像这样:

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

然而,这不起作用,任何人都可以指出我正确的方向,我想说(在伪代码中)

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

2 个答案:

答案 0 :(得分:1)

您可能需要每个列的案例

!path

答案 1 :(得分: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