mysql - SQL根据条件从两列按值排序

标签 mysql sql

我有一张表,其中包含属于某些类别的条目。每个条目都有一个 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/

相关文章:

php - sql查询只返回一行

python - Tastypie的detail_uri_name与foreignkey的属性

sql - 如何从 Oracle Access MS Access 数据库?

java - Android:连接mysql不起作用

java - 从ResultSet java中选择记录

SQL数据库选择命令

mysql - 创建新数据库表时不能在 DEFAULT 约束中使用函数和变量

php - 为什么所有的二维码图像都发送给用户,一个用户应该得到一张二维码图像

php/ODBC编码问题

mysql - 短路UNION? (如果第一个子句没有结果,只执行第二个子句)