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

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

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

  1. Select * from table where col_1 ="" order by col_5,col_4,col_3;
  2. Select * from table where col_1!="" order by col_3,col_4,col_5;
gt0wga4j

gt0wga4j1#

  1. Select *
  2. from your_table
  3. order by col_1 <> '',
  4. case when col_1 = '' then col_3 else col_5 end,
  5. col_4,
  6. case when col_1 = '' then col_5 else col_3 end
dl5txlt9

dl5txlt92#

我处理这类事情的典型方法是juergen的答案所建议的方法的变体,但处理类型差异:

  1. SELECT *
  2. FROM table AS t
  3. ORDER BY CASE WHEN col_1 = '' THEN 0 ELSE 1 END
  4. , CASE WHEN col_1 = '' THEN col_5 ELSE /* valid literal value for type of col_5 */ END
  5. , CASE WHEN col_1 <> '' THEN col_3 ELSE /* /* valid literal value for type of col_3 */ */ END
  6. , col_4
  7. , CASE WHEN col_1 = '' THEN col_3 ELSE /* valid literal value for type of col_3 */ END
  8. , CASE WHEN col_1 <> '' THEN col_5 ELSE /* valid literal value for type of col_5 */ END

如果字段是兼容的数据类型,juergen的答案可能会稍微好一点(总体排序维度更少)。

相关问题