Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle10g GROUPBY子句在oracle sql中的工作方式_Oracle10g - Fatal编程技术网

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执行排序时,它将处理 它可能会发现空值“大于”任何其他值。换句话说 按数字数据类型列排序时,以及该列 包含空值,空值将排序为大于 列表中的所有非空值。性格也是如此 数据类型和日期数据类型