序号位置表示法(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用法无论如何都对我来说).我还缺少其他任何好处吗?
这可能听起来像是一项家庭作业,但它确实是研究办公室每个月提供的教育午餐.他们支付午餐费用,我们必须提供一个感兴趣的小话题.
我想在我的SQL server 2012查询中使用OFFSET和Fetch.但没有任何顺序.我不能使用order by.Because我的排序顺序将丢失.我如何使用OFFSET和Fetch没有order by和行号以及我的查询中的位置?我的2个选择表具有相同的结构.
INSERT INTO @TempTable [some columns]
select [some columns] from table1 order by col1
INSERT INTO @TempTable [same columns]
select [some columns] from table2 order by col2
select * from @TempTable OFFSET 20 ROWS FETCH NEXT 50 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)
此查询在OFFSET关键字处有语法错误.