如何在Oracle SQL中使用by by子句

拉杰什123

我有下面的代码

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

我正在得到像下面的输出一样的输出----- NULL 100200 20 10 30

为什么NULL值是第一个?

请向我解释为什么下一个100和200等。

谢谢

多同步

合并子查询时,没有默认顺序,除非您指定ORDER BY(您只能将其放在最后一个子查询之后)。

您很幸运获得了这样的结果(但是我得到了相同的结果)。也许Oracle以某种方式处理行,这些行将NULLS放在首位,但是您不能以此为基础。

但是,如果ORDER BY子句的列中有NULLS值,则Oracle具有特定的规则:

当SELECT使用ORDER BY执行排序时,它将可能发现为NULL的所有值视为“大于”任何其他值。换句话说,当您按数字数据类型列进行排序,并且该列包含NULL值时,NULL值将排序为大于列表中的所有NOT NULL值。字符数据类型和日期数据类型也是如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章