Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 顺序后面跟一个数字_Sql_Sqlite - Fatal编程技术网

Sql 顺序后面跟一个数字

Sql 顺序后面跟一个数字,sql,sqlite,Sql,Sqlite,我接受了这个问题 该查询假定将优先处理x='abc'案例。但我真的很困惑为什么会这样?ORDER后面不是跟一个列名或列号吗?此外,我还研究了orderby的语法,但他们没有告诉我这方面的任何信息。我也尝试过类似的方法,但它说:“按术语排列的第一个订单超出范围-应介于1和1之间”: 那么,谁能解释一下这个问题,或者至少指出一个好的文档?非常感谢。好的,当一个ORDER BY子句后面跟一个数字时,这个数字将被引用到(数字)位置的列中 ORDER BY后跟一个大小写表达式称为条件排序,当x等于abc时

我接受了这个问题

该查询假定将优先处理x='abc'案例。但我真的很困惑为什么会这样?ORDER后面不是跟一个列名或列号吗?此外,我还研究了orderby的语法,但他们没有告诉我这方面的任何信息。我也尝试过类似的方法,但它说:“按术语排列的第一个订单超出范围-应介于1和1之间”:


那么,谁能解释一下这个问题,或者至少指出一个好的文档?非常感谢。

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

ORDER BY
后跟一个
大小写表达式
称为条件排序,当
x
等于
abc
时,每列将获得值
0
,当其不等于
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
.........

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

但它可以和正常的排序结合起来吗?还有,为什么这样一个好的特性没有被正确地记录下来呢?因为它不是标准的SQL,它是一种欺骗排序的方法,当然,它可以,这是一种有效的排序方式:
当x='abc'然后0 else 1 END,x DESC,y ASC…如果你想的话,另一种情况是
@SidGo@SidGo-记录在案。在下的ORDER BY子句中指出,只有当ORBER BY表达式为常量整数(不是函数、字段、表达式或CASE语句)时,位置排序才有效。谢谢。这真的是一个非常有用的功能,我很惊讶在互联网上几乎找不到它。我真的需要找到一个好的文档,以防有更多的用法。@MatBailie-Oh。但我的具体意思是来自SQL教程,因为这是初学者的起点。谢谢你的链接。
SELECT A
FROM B
ORDER BY 2
 x  |   y   | .... | Here is the new value that will order the query
abc     1              0
ayr     0              1
acz     1              1
.........