SQL: ORDER BY [列索引]
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
SQL-92 标准和大多数实现一直支持按列索引排序(尽管该功能已从 SQL-99 中移除!)。对于像这样的快速查询,它可能很有用
SELECT ID, FIRST_NAME || ' ' || LAST_NAME FROM AUTHOR ORDER BY 2;
以上等同于
SELECT ID, FIRST_NAME || ' ' || LAST_NAME FROM AUTHOR ORDER BY FIRST_NAME || ' ' || LAST_NAME;
但很容易看出,通过在投影中引入另一列,在索引为 2
的排序字段之前的任何位置,此查询可能会很快中断
-- Adding a column has broken the query SELECT ID, LAST_UPDATE, FIRST_NAME || ' ' || LAST_NAME FROM AUTHOR ORDER BY 2;
或者,这些变体不会中断
-- The query is not affected by this change SELECT ID, LAST_UPDATE, FIRST_NAME || ' ' || LAST_NAME FROM AUTHOR ORDER BY FIRST_NAME || ' ' || LAST_NAME; -- Also, aliasing the expression (to avoid repetition) can work in many dialects SELECT ID, LAST_UPDATE, FIRST_NAME || ' ' || LAST_NAME AS NAME FROM AUTHOR ORDER BY NAME;
虽然对于快速的临时查询,ORDER BY [列索引]
功能有时可能很有用,但通常最好避免使用该功能,尤其是在使用 jOOQ 时,这使得重用查询部分非常简单。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!