![]() |
1
6
这与SQLdbms如何解析不明确的名称有关。 我还没有在SQL标准中追踪到这种行为,但它似乎在各个平台上都是一致的。这是正在发生的事情。
别名“col_1”为“col_2”,并在ORDER BY子句中使用别名。dbms将ORDER BY中的“col_2”解析为“col_1”的别名,并根据“test”中的值进行排序。“col_1”。
col_2 -- 1 2 3 同样,别名“col_1”为“col_2”,但在ORDER BY子句中使用表达式。dbms解析“col_2” 不 作为“col1”的别名,但作为列“test”。“col_2”。它根据“测试”中的值进行排序。“col_2”。
col_2 -- 3 2 1 因此,在您的情况下,查询失败是因为dbms希望将表达式中的“NewValue”解析为基表中的列名。但事实并非如此;这是一个列别名。 PostgreSQL PostgreSQL中的一节记录了这种行为 Sorting Rows 。他们陈述的理由是减少歧义。
SQL Server 2008中的文档错误 A. 轻微地 不同的问题 aliases in the ORDER BY clause .
除非我没有摄入足够的咖啡因,否则这根本不是真的。此语句按“测试”排序。SQL Server 2008和SQL Server 2012中的“col_1”。
|
|
2
0
这一限制似乎与另一个限制有关,即“列别名不能在同一列中引用”
可以翻译为:
这是一个法律问题。但此查询:
应翻译为:
这将引发错误:
最后,这些似乎是因为SQL标准行为,在实现中并非不可能。 更多信息请访问: Here
注意:最后一个查询可以由
|
|
3
-1
您可以尝试以下操作:
|
![]() |
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 1 年前 |
![]() |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
Java · 使用交叉应用同时显示两列 2 年前 |