What does the SQL standard say about parentheses in SQL UNION/EXCEPT/INTERSECT statements?

后端 未结 3 352
被撕碎了的回忆
被撕碎了的回忆 2021-01-18 19:15

I\'m trying to write a SQL UNION that works on both MySQL and SQLite.

(select_clause_A) UNION (select_clause_B)

SQLite doesn\'t like the pa

3条回答
  •  野的像风
    2021-01-18 19:54

    There's no need for brackets/parenthesis in a UNION statement.

    MySQL is the only one I'm aware of at this moment, which allows you to define ORDER BY and LIMIT clauses specific to each query as long as the query is enclosed in brackets -- standard SQL only allows a ORDER BY for the final result. The GROUP BY and HAVING clauses are specific to each query that makes up the UNION'd statement.

    MySQL supports:

     (SELECT a.column
        FROM A_TABLE a
    ORDER BY a.column DESC)
    UNION
    SELECT b.column
      FROM B_TABLE b
    

    ...which will cause no end of grief if you want/need to port to other databases.

    Standard SQL only allows:

    SELECT a.column
      FROM A_TABLE a
    UNION
    SELECT b.column
      FROM B_TABLE b
    ORDER BY column DESC
    

提交回复
热议问题