按列或按表达式排序

要按表达式对查询结果排序,您还必须为在 Projection 子句中的表达式声明显示标签,如下例所示,为两列之间的差异声明显示标签 span
SELECT paid_date - ship_date span, customer_num FROM orders
        ORDER BY span;

GBase 8s 支持不在 Projection 子句的选择列表中出现的 ORDER BY 子句中的列和表达式。您可对选择列表中的派生的行省略显示标签,并通过 ORDER BY 子句中的选择编号来指定派生的列。

然而,Projection 子句的选择列表必须包括 ORDER BY 子句指定的任何列或表达式,如果下列任一为真的话:
下一查询从 orders 表选择一列,并按照另一列的值对结果排序。在缺省情况下,按升序罗列这些行。
SELECT ship_date FROM orders ORDER BY order_date;
仅当查询还有 GROUP BY 子句时,您才可按照聚集表达式排序。此查询为 ORDER BY 子句中的聚集声明显示标签 maxwgt
SELECT ship_charge, MAX(ship_weight) maxwgt
        FROM orders GROUP BY ship_charge ORDER BY maxwgt;

如果当前处理的语言环境定义本地化顺序,则按那本地化的顺序对 NCHAR 和 NVARCHAR 列值排序。

GBase 8s 中,ORDER BY 子句中的 column 不可为集合类型,但其结果集定义集合派生的表的查询可包括 ORDER BY 子句。要了解示例,其参阅 集合派生表

如果您提高 DS_NONPDQ_QUERY_MEM 配置参数的设置,则您可能提升有些非 PDQ 查询的性能,这些查询使用 ORDER BY 子句来对大型行集合排序。