mysql根据不同的位置进行不同的排序

k2fxgqgv  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(357)

我可以分别运行每个查询,然后紧接着输出数据,但我希望有一种方法可以在一个查询中完成。
我正在寻找所有的记录显示,但有所有的记录与 col_1="" 在顶部和相应的排序,然后在下面的所有记录与 col_1!="" 相应排序(与拳头不同 order by )
我希望我能解释清楚。
下面是两个示例查询,我希望按照我所描述的方式处理它们。

Select * from table where col_1 ="" order by col_5,col_4,col_3;
Select * from table where col_1!="" order by col_3,col_4,col_5;
jtjikinw

jtjikinw1#

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
x7rlezfr

x7rlezfr2#

我处理这类事情的典型方法是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的答案可能会稍微好一点(总体排序维度更少)。

相关问题