我有一张表,其中包含属于某些catergory的条目。每个条目都有一个ID(e_ID),每个类别都有一个ID(c_ID),还有一列用于定义包含由数字表示的自定义顺序的内容(sort1)的顺序。
现在添加了第二个可选类别。如果那个aplies,则排序编号进入一个新的(sort2)列,这样主要的catergory的顺序就不会被覆盖。
我曾经使用过ORDER BY sort1
,但是如果当前的主要类别是curent catergory,那么现在需要sort1;如果是次要的catergory,则需要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
答案 0 :(得分:2)
我认为你正在寻找这个:
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
答案 1 :(得分:1)
如果我理解你想要什么,那么以下内容应该有效:
SELECT * FROM my_table
WHERE c_ID = 7
ORDER BY sort1
UNION
SELECT * FROM my_table
WHERE c2_ID = 7
ORDER BY sort2
如果您不熟悉UNION
- 它只会将两个选项合并为一个