我只需要一个表中的一个查询(SQl),它具有多个字段的多个“排序依据”。
我希望查询每个字段的每个“排序依据”以基于表中的数据返回单个列表结果
ex:
name c1 c2
"a" 1 2
"b" 3 4
"c" 2 1
"d" 3 1
"e" 1 4
"f" 3 4
"g" 5 2
"h" 4 4
我想通过一个查询返回一个列表,该列表基于“ c1”和“ c2”(asc)的顺序,如下所示:
"a" 1 2 --> order asc by c1
"e" 1 4
"c" 2 1
"b" 3 4
"d" 3 1
"f" 3 4
"h" 4 4
"g" 5 2
----------
"c" 2 1 ---> order asc by c2
"d" 3 1
"a" 1 2
"g" 5 2
"b" 3 4
"e" 1 4
"f" 3 4
"h" 4 4
这是您想要的吗?
select t.*
from t cross join
(values ('col1'), ('col2')) v(which)
order by v.which,
(case when which = 'col1' then col1 end) asc,
(case when which = 'col2' then col2 end) asc;
请注意,出于两个原因,两个单独的查询可能会更快:
col1
和/或col2
上有索引,则该索引可用于排序。使用更复杂的键是不可能的。