我可以分别运行每个查询,然后紧接着彼此输出数据,但我希望有一种方法可以在一个查询中进行。
我正在寻找要显示的所有记录,但所有记录的顶部都是col_1=""
并进行相应的排序,然后在下面的情况下,所有具有col_1!=""
的记录都进行了相应的排序(与第一{ {1}})
我希望我能解释清楚。
这里有2个示例查询,我希望按照我的描述进行处理。
order by
答案 0 :(得分:0)
Select *
from your_table
order by col_1 <> '',
case when col_1 = '' then col_3 else col_5 end,
col_4,
case when col_1 = '' then col_5 else col_3 end
答案 1 :(得分:0)
我处理此类问题的典型方法是Juergen的答案所建议的方法的一种变体,但是可以处理类型差异:
SELECT *
FROM table AS t
ORDER BY CASE WHEN col_1 = '' THEN 0 ELSE 1 END
, CASE WHEN col_1 = '' THEN col_5 ELSE /* valid literal value for type of col_5 */ END
, CASE WHEN col_1 <> '' THEN col_3 ELSE /* /* valid literal value for type of col_3 */ */ END
, col_4
, CASE WHEN col_1 = '' THEN col_3 ELSE /* valid literal value for type of col_3 */ END
, CASE WHEN col_1 <> '' THEN col_5 ELSE /* valid literal value for type of col_5 */ END
当字段是兼容的数据类型时,Juergen的答案可能会稍好一些(总体排序维度较小)。