OMG*_*ies 29 sql sql-server oracle ordinals
序号位置表示法(AKA序号)是基于SELECT子句列中列顺序的列速记,而不是列名称或列别名.在该ORDER BY子句中通常支持,一些数据库(MySQL 3.23 +,PostgreSQL 8.0+)也支持该GROUP BY子句的语法.
以下是使用Ordinals的示例:
GROUP BY 1, 2
ORDER BY 1, 2
Run Code Online (Sandbox Code Playgroud)
使用它并不好,因为它会使查询变得脆弱 - 如果列顺序发生变化,则需要更新序数,否则您的查询将不会返回您的想法.很可能,GROUP BY如果在这些位置的列包含在聚合中,则会出现错误...
我能想到的唯一好处是通过网络发送的数据更少,如果你没有使用存储过程或函数(这使得ordinal用法无论如何都对我来说).我还缺少其他任何好处吗?
这可能听起来像是一项家庭作业,但它确实是研究办公室每个月提供的教育午餐.他们支付午餐费用,我们必须提供一个感兴趣的小话题.
gbn*_*gbn 30
我用它:
没有好处.
SQL Server只支持ORDER BY.在其他任何地方,它都是要评估的表达式.
mat*_*mc3 15
很多时候,当我查询一个包含大量列的表时(在ad-hoc-land中只是为了数据探索...我永远不会为这样的PROD环境编写代码)我做这样的事情来得到我关心的字段紧靠在一起:
select top 1000
Col_1, Col_18, Col_50, Col_117, *
from
TableWithTonsOfCols
order by
1, 4 desc, 3
Run Code Online (Sandbox Code Playgroud)
如果我说order by Col_1, Col_117 desc, Col_50我的查询会barf,因为由于"*"加倍,语句不会知道我打算订购哪些列.不是很常见,但仍然是一个有用的功能.
| 归档时间: |
|
| 查看次数: |
24654 次 |
| 最近记录: |