Oracle10g GROUPBY子句在oracle sql中的工作方式
我有下面这样的代码Oracle10g GROUPBY子句在oracle sql中的工作方式,oracle10g,Oracle10g,我有下面这样的代码 WITH mytable AS (SELECT '10' AS n FROM DUAL UNION ALL SELECT '20' FROM DUAL UNION ALL SELECT '20' FROM DUAL UNION ALL SELECT '30' FROM DUAL UNION ALL SELECT '20' FROM DUAL UNION ALL SELECT '100'
WITH mytable AS
(SELECT '10' AS n
FROM DUAL
UNION ALL
SELECT '20'
FROM DUAL
UNION ALL
SELECT '20'
FROM DUAL
UNION ALL
SELECT '30'
FROM DUAL
UNION ALL
SELECT '20'
FROM DUAL
UNION ALL
SELECT '100'
FROM DUAL
UNION ALL
SELECT NULL
FROM DUAL
UNION ALL
SELECT '200'
FROM DUAL)
SELECT n
FROM mytable
GROUP BY n
我得到的输出如下所示
输出
-----
无效的
100
200
20
10
三十
为什么空值是第一个
请给我解释一下为什么下一个是100,下一个是200,以此类推
谢谢在联合子查询时没有默认顺序,除非您指定了一个顺序依据(您只能在最后一个子查询之后输入) 你很幸运得到了这样的结果(不过我也得到了同样的结果)。也许Oracle以某种方式处理行,将null放在第一位,但您不能指望这一点 但是,如果ORDER BY子句中的列中有空值,Oracle有特定的规则: 当SELECT使用ORDER BY执行排序时,它将处理 它可能会发现空值“大于”任何其他值。换句话说 按数字数据类型列排序时,以及该列 包含空值,空值将排序为大于 列表中的所有非空值。性格也是如此 数据类型和日期数据类型