我有一个名字和高度的表学生.我想要一个查询,按字母顺序排列高150厘米的学生,按照名字的降序排列小于150厘米的学生.
像这样的东西:
(select * from students where height >= 150 order by name)
union
(select * from students where height < 150 order by name desc)
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为联合搞乱了子查询中行的顺序.我知道这是正常的,联合输出一组,并且在一组中它的顺序并不重要.有什么像追加?
SELECT *
FROM students
ORDER BY IF(height >= 150, 1,0 ) DESC,
IF(height >= 150, name, '') ASC,
name DESC
Run Code Online (Sandbox Code Playgroud)
样本输出
+------+--------+
| name | height |
+------+--------+
| a | 189 |
| m | 666 |
| thy | 166 |
| yyy | 1277 |
| zz | 101 |
| swq | 122 |
| n | 111 |
| g | 145 |
+------+--------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |