我有一些简单的查询:
SELECT * FROM table
你们都知道结果:
|id| foo | bar |
-------------------------
|1 | aaa | 123 |
|2 | bbb | 234 |
|3 | ccc | 345 |
|4 | ddd | 456 |
但是,我想要做的是从3号唱片中看出来的?我知道我可以用SELECT * FROM table where id=3
来做,但是我需要设置我选择的记录在第一级,假设我选择id=3
所以结果如下:
|id| foo | bar |
-------------------------
|3 | ccc | 345 |
|4 | ddd | 456 |
|1 | aaa | 123 |
|2 | bbb | 234 |
或
|id| foo | bar |
-------------------------
|3 | ccc | 345 |
|1 | aaa | 123 |
|2 | bbb | 234 |
|4 | ddd | 456 |
这可能吗?
答案 0 :(得分:1)
这样您首先得到id = 3
:
SELECT *
FROM tbl
ORDER BY (id = 3) DESC
-- ,id
如果您希望其他订购,也可以id
订购。
表达式的计算结果为boolean。 FALSE
(在mysql中为0)在TRUE
之前排序(在mysql中为1),因此我们按顺序排序。
它还会自动涵盖id
NULL
的情况。我引用manual again here:
执行ORDER BY时,如果您这样做,则首先显示NULL值 ORDER BY ... ASC,如果你按照ORDER BY ... DESC进行操作。