sql union命令

bis*_*992 2 mysql sql union

我有一个名字和高度的表学生.我想要一个查询,按字母顺序排列高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)

它不起作用,因为联合搞乱了子查询中行的顺序.我知道这是正常的,联合输出一组,并且在一组中它的顺序并不重要.有什么像追加?

Rie*_*sio 8

   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)