按多列条件排序 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