条件顺序由多列Mysql组成

时间:2015-01-27 15:43:21

标签: mysql sql-order-by conditional

我有一个由作者组成的表,很少有作者同时拥有Bio和Image,很少有只有图像,很少有只有bio,很少有人都没有.. 生物和图像存储在不同的列中, 我想以这样一种方式对我的查询结果(order by)进行排序,使得具有bio和image的作者应该首先出现,有图像的作者应该是次要的,具有bio的那些应该是第三顺序的,而那些既不应该是第二顺序的来吧。

如何编写这样的查询..

3 个答案:

答案 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