ORDER BY后跟一个数字

时间:2016-05-29 10:02:12

标签: sql sqlite

我从此http://matthewlehner.net/rails-api-testing-guidelines/获取此查询。

SELECT *
FROM A 
WHERE x='abc' 
    OR y=0
order by case when x='abc' then 0 else 1 end;

该查询应该优先考虑x =' abc'案例。但我真的很困惑,为什么会这样呢?是不是ORDER BY后跟列名或列号?另外,我研究了ORDER BY的语法,他们也没有说明这一点。我也试过这样的事情,但它说:"第一个ORDER BY术语超出范围 - 应该在1到1之间":

SELECT A
FROM B
ORDER BY 2

那么,任何人都可以解释这个查询或者至少指向一个好的文档吗?非常感谢你。

1 个答案:

答案 0 :(得分:2)

好吧,当一个ORDER BY子句跟一个数字后,这个数字将被引用到(number)位置的列。

ORDER BY后跟CASE EXPRESSION称为条件排序,当0等于x时,每列将获得值abc它不会得到值1。之后,排序位于ASC,因此0之前将始终保持1

会是这样的:

 x  |   y   | .... | Here is the new value that will order the query
abc     1              0
ayr     0              1
acz     1              1
.........

所以,基本上就像生成一个新值一样。