我有一个由作者组成的表,很少有作者同时拥有Bio和Image,很少有只有图像,很少有只有bio,很少有人都没有.. 生物和图像存储在不同的列中, 我想以这样一种方式对我的查询结果(order by)进行排序,使得具有bio和image的作者应该首先出现,有图像的作者应该是次要的,具有bio的那些应该是第三顺序的,而那些既不应该是第二顺序的来吧。
如何编写这样的查询..
答案 0 :(得分:1)
您可以按顺序使用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
答案 1 :(得分:1)
我尝试使用CASE,但它根据我的喜好不起作用,得到了一个更简单的解决方案。
Select * from mytable order by Condition1 Desc, condition2 desc, condition3 desc
答案 2 :(得分:0)
对于多个条件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