代码之家  ›  专栏  ›  技术社区  ›  Toru

subselect的排序顺序有保证吗?

  •  3
  • Toru  · 技术社区  · 7 年前

    SELECT nr
    FROM
    (
        SELECT 1 AS nr FROM dual
        UNION
        SELECT 2 AS nr FROM dual
        UNION
        SELECT 3 AS nr FROM dual
    );
    

    1
    2
    3
    

    ?

    2 回复  |  直到 7 年前
        1
  •  7
  •   Gordon Linoff    7 年前

    不,这不是保证。SQL表表示 无序 套。SQL结果集也是无序的——除非代码有显式的 ORDER BY

    没有 订货人 ,您将得到相同的三行,但值可以是任意顺序。我强烈建议您执行以下操作:

    SELECT nr
    FROM (SELECT 1 AS nr FROM dual
          UNION ALL
          SELECT 2 AS nr FROM dual
          UNION ALL
          SELECT 3 AS nr FROM dual
         ) x
    ORDER BY nr;
    

    UNION ALL 而不是 UNION . 工会 删除重复项会产生开销—这是数据不需要的。

        2
  •  1
  •   Fahmi    7 年前

    SELECT nr
    FROM
    (
        SELECT 1 AS nr FROM dual
        UNION
        SELECT 2 AS nr FROM dual
        UNION
        SELECT 3 AS nr FROM dual
    )a order by nr