MYSQL中的ORDER BY和=(等于)

Ran*_*ash 8 mysql sql sql-order-by

我有一个问题,我遇到了一段有趣的代码.在MySQL语句中有类似的东西:

{...} ORDER BY whatever = 3 ASC,无论= 4 ASC,无论= 6 ASC {...}

这是否意味着它将以这种方式订购?:

thing | whatever  
15    | 1
1     | 3
5     | 3
8     | 3
2     | 4
3     | 4
6     | 4 
4     | 6
7     | 6
9     | 6
14    | 9
21    | 10
18    | 9 
...
Run Code Online (Sandbox Code Playgroud)

它似乎只是排序等于3,4和6休息是无序的...

这是正确/支持的语法吗?

Mar*_*ith 7

whatever=3使用0false和1as作为布尔值求值true.

因为它是按升序排序的,所以将首先订购不符合条件的那些.然后第二个排序列whatever=4开始发挥作用,这whatever=4将是该组中的最后一个,依此类推.

对于whatever不在(3,4,6)无顺序的那些被指定作为决胜局并且命令是任意的.

它是MySQL支持的语法,但不是标准或可移植的.

  • 我想他们嫉妒你的67k并希望你穿上几点.你的答案对我有用. (2认同)