UNION只傳回唯一行,而UNION ALL包含重複行;UNION在合併前去重,UNION ALL不對行去重。
SQL 中UNION 和UNION ALL 的差異
UNION 和UNION ALL 都是用來合併兩個或多個表中的行的SQL 操作符。然而,它們在處理重複行方面存在根本差異。
UNION
UNION ALL
範例
假設有兩個表T1 和T2,如下:
<code>T1: +----+----+ | ID | Name | +----+----+ | 1 | John | | 2 | Susan | | 3 | Mary | +----+----+ T2: +----+----+ | ID | Name | +----+----+ | 2 | Susan | | 4 | Bob | +----+----+</code>
如果使用UNION 運算符合併這兩個表:
<code>SELECT * FROM T1 UNION SELECT * FROM T2;</code>
結果將是:
<code>+----+----+ | ID | Name | +----+----+ | 1 | John | | 2 | Susan | | 3 | Mary | | 4 | Bob | +----+----+</code>
其中,重複的行(ID = 2,Name = Susan)已被刪除。
如果使用 UNION ALL 操作符合併這兩個表:
<code>SELECT * FROM T1 UNION ALL SELECT * FROM T2;</code>
結果將是:
<code>+----+----+ | ID | Name | +----+----+ | 1 | John | | 2 | Susan | | 2 | Susan | | 3 | Mary | | 4 | Bob | +----+----+</code>
其中,重複行已包含在結果中。
以上是sql中的union和union all的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!