按多列条件排序 Mysql
Conditional Order by multiple columns Mysql
我有一个 table 由作者组成,很少有作者同时拥有 Bio 和 Image,很少有只有 image,很少有只有 bio,很少有两者都没有..
bio 和 image 存储在不同的列中,
我想以这样的方式对我的查询结果(排序依据)进行排序,即同时具有生物和图像的作者应该排在第一位,那些只有图像的应该排在第二位,那些有生物的应该排在第三位,而那些都没有的应该最后来。
如何编写这样的查询..
您可以按顺序使用 CASE
,这样同时拥有个人简介和图片的作者将首先列出有图片的作者,然后是只有个人简介的作者,然后是其余作者
select *
from table
order by case when bio is not null and image is not null then 3
when image is not null then 2
when bio is not null then 1
else 0 end desc
我尝试使用 CASE,但它没有按照我的喜好工作,找到了一个更简单的解决方案。
Select * from mytable order by Condition1 Desc, condition2 desc, condition3 desc
对于多个条件 ORDER BY 语句:
ORDER BY CASE category WHEN 0 THEN concat(cName,', ',bName) END DESC,
CASE category WHEN 1 THEN concat(aName,', ',bName,', ',cName) END DESC,
CASE category WHEN 2 THEN concat(bName,', ',aName,', ',cName) END DESC
我有一个 table 由作者组成,很少有作者同时拥有 Bio 和 Image,很少有只有 image,很少有只有 bio,很少有两者都没有.. bio 和 image 存储在不同的列中, 我想以这样的方式对我的查询结果(排序依据)进行排序,即同时具有生物和图像的作者应该排在第一位,那些只有图像的应该排在第二位,那些有生物的应该排在第三位,而那些都没有的应该最后来。
如何编写这样的查询..
您可以按顺序使用 CASE
,这样同时拥有个人简介和图片的作者将首先列出有图片的作者,然后是只有个人简介的作者,然后是其余作者
select *
from table
order by case when bio is not null and image is not null then 3
when image is not null then 2
when bio is not null then 1
else 0 end desc
我尝试使用 CASE,但它没有按照我的喜好工作,找到了一个更简单的解决方案。
Select * from mytable order by Condition1 Desc, condition2 desc, condition3 desc
对于多个条件 ORDER BY 语句:
ORDER BY CASE category WHEN 0 THEN concat(cName,', ',bName) END DESC,
CASE category WHEN 1 THEN concat(aName,', ',bName,', ',cName) END DESC,
CASE category WHEN 2 THEN concat(bName,', ',aName,', ',cName) END DESC