订单上的SQL问题

时间:2013-12-19 15:16:40

标签: mysql sql

如何首先列出id为x的数据,然后是数字顺序? 例如,我有这样的数据:

0,
1,
1,
0,
1,
2,
56,
4

我希望得到以下结果:

1,
1,
1,
0,
0,
2,
4,
56

此外,我希望id为1的项目的订单为列x,而id为1的项目的订单为y列。

1 个答案:

答案 0 :(得分:1)

您可以使用order by子句中的条件执行此操作。这是MySQL中的一种简单方法:

order by (id = 1) desc, id;

当id采用指定值时,表达式id = 1的计算结果为1。否则评估为0。

顺序依次是通过这个表达式,然后是id。

编辑:

如果您想按其他列排序其他所有内容并且列的类型相同:

order by (id = 1) desc,
         (case when id = 1 then x else y end)

否则,您可以将其拆分:

order by (id = 1) desc,
         (case when id = 1 then x end),
         (case when id = 1 then NULL else y end)