我有一张表,其中包含属于某些类别的条目。每个条目都有一个 ID (e_ID),每个类别都有一个 ID (c_ID),并且有一列用于定义内容的顺序 (sort1),其中包含由数字表示的自定义顺序。
现在添加了第二个可选类别。如果适用,排序编号将进入新的 (sort2) 列,这样主要分类的顺序就不会被覆盖。
我曾经使用 ORDER BY sort1
但现在如果当前类别是条目的主要类别则需要 sort1,如果是次要类别则需要 sort2。属于同一类别的所有条目应由用户排序,因此数据存储在两列中。我可以在订单声明中以这种方式使用两者吗?
e_ID c_ID c2_ID sort1 sort2
1 7 3 1 27
2 3 7 37 3
3 7 - 2 -
4 2 4 99 81
expected order 1,3,2 for categroy 7
最佳答案
我想你正在寻找这个:
select t.*
from t
order by coalesce(c2_id, c_id), -- put similar categories together
coalesce(sort2, sort1) -- order according to your priority
如果你想限制到一个特定的类别,那么添加:
where coalesce(c2_id, c_id) = 7
关于mysql - SQL根据条件从两列按值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104810/