Mysql 按第一个条件排序或条件为真
我在MySQL 5.6+数据库中有下表Mysql 按第一个条件排序或条件为真,mysql,sql-order-by,Mysql,Sql Order By,我在MySQL 5.6+数据库中有下表 +----+-------+-------+--------------+--------------+ | id | mood1 | mood2 | mood1_visual | mood2_visual | +----+-------+-------+--------------+--------------+ | 1 | 5 | 7 | 5c | 7a | | 2 | 5 |
+----+-------+-------+--------------+--------------+
| id | mood1 | mood2 | mood1_visual | mood2_visual |
+----+-------+-------+--------------+--------------+
| 1 | 5 | 7 | 5c | 7a |
| 2 | 5 | 7 | 5b | 7b |
| 3 | 5 | 7 | 5c | 7d |
| 4 | 5 | 8 | 5a | 8a |
| 5 | 5 | 7 | 5c | 7a |
| 6 | 5 | 8 | 5b | 8a |
+----+-------+-------+--------------+--------------+
我需要选择其中的行
(`mood1_visual`='5c' AND `mood2_visual`='7a') OR
(`mood1`=5 AND `mood2`=7 AND (`mood1_visual`<>'5c' OR `mood2_visual`<>'7a'))
在ORDER BY子句中,我如何判断这一点?有类似的吗
ORDER BY THE ONES THAT MATCH CONDITION FIRST THEN THE OTHERS ?
请注意,5,1,2,3或1,5,3,2或5,1,3,2都是我需要的有效排序,只是为了使解决方案更简单。MySQL可以
按任意表达式排序,例如
ORDER BY (foo = bar)
该操作的布尔结果将被类型转换为整数0
或1
,因此,如果您首先希望所有“相等”值(1
),则
如果您首先需要所有的false(0
)值,那么
ORDER BY (foo = bar) ASC
MySQL可以按任意表达式排序,例如
ORDER BY (foo = bar)
该操作的布尔结果将被类型转换为整数0
或1
,因此,如果您首先希望所有“相等”值(1
),则
如果您首先需要所有的false(0
)值,那么
ORDER BY (foo = bar) ASC
如果将CASE
表达式与orderby
类似,会怎么样
ORDER BY
CASE
WHEN (`mood1_visual`='5c' AND `mood2_visual`='7a') THEN id
END
如果将CASE
表达式与orderby
类似,会怎么样
ORDER BY
CASE
WHEN (`mood1_visual`='5c' AND `mood2_visual`='7a') THEN id
END
我只是想知道你怎么能回答得那么快。。。谢谢!我只是想知道你怎么能回答得那么快。。。谢谢!