我从此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
那么,任何人都可以解释这个查询或者至少指向一个好的文档吗?非常感谢你。
答案 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
.........
所以,基本上就像生成一个新值一样。