本文严禁在未征得本人同意的情况下以任何形式进行转载。本人只接受在邮件中的转载申请,如需转载,请发送邮件至 betteryou@126.com。
SELECT语句
结果集排序
标准(Standard) | SQL标准指出关系(relation)是未排序的,但结果集可能在通过游标返回时被排序:
DECLARE cursorname CURSOR FOR SELECT … FROM … WHERE … ORDER BY column_name1, column_name2, …
如上所述,标准并不允许将ORDER BY子句放置在除游标以外的其它地方。但也存在一些特例,如window函数中的ORDER BY(包括ROW_NUMBER) OVER… 和RANK() OVER…)。
标准中未指定在排序比较中NULL值与非NULL值的比较规则,但所有的NULL在排序中被视为一样的值,而且所有的NULL值必须排于非NULL值之前或之后。 |
PostgreSQL | 除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BY。NULL值被视为比非NULL值高。 |
DB2 | 除了在游标定义中,DB2还支持在别的上下文中使用ORDER BY。NULL值被视为比非NULL值高。 |
MS SQL Server | 除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BY。NULL值被视为比非NULL值低。 |
MySQL | 除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BY。
NULL值被视为比非NULL值低,除非在列名前加上-(减号),而且ASC变为DESC,或DESC变为ASC;似乎在列名前加-(减号)的特性未被记入文档。 |
Oracle | 除了在游标定义中,PostgreSQL还支持在别的上下文中使用ORDER BY。
NULL值被视为比非NULL值高;虽然如此,可通过在ORDER BY表达式中添加NULLS FIRST或NULLS LAST来改变。
请注意Oracle将空字符串和NULL视为同一值。 |