例解Union和Union All的區別

2021-06-13 22:40:17 字數 1842 閱讀 1811

#例解union和union all的區別

mysql> create table u1 (i int primary key, j int);

query ok, 0 rows affected (0.27 sec)

mysql> create table u2 (i int primary key, j int);

query ok, 0 rows affected (0.05 sec)

mysql> insert into u1 values (1,1),(2,2);

query ok, 2 rows affected (0.06 sec)

records: 2 duplicates: 0 warnings: 0

mysql> insert into u2 values (1,1),(2,2);

query ok, 2 rows affected (0.03 sec)

records: 2 duplicates: 0 warnings: 0

mysql> (select i,j from u1) union (select i,j from u2);

+---+------+

| i | j |

+---+------+

| 1 | 1 |

| 2 | 2 |

+---+------+

2 rows in set (0.05 sec)

mysql> (select i,j from u1) union all (select i,j from u2);

+---+------+

| i | j |

+---+------+

| 1 | 1 |

| 2 | 2 |

| 1 | 1 |

| 2 | 2 |

+---+------+

4 rows in set (0.00 sec)

union all不會去重複行,union會去重複行。

」重「的定義為:整行資料都相等。rowkey相等,其它列值不等,不算重複行。例如:

mysql> insert into u1 values (3,1);

query ok, 1 row affected (0.02 sec)

mysql> insert into u2 values (3,3);

query ok, 1 row affected (0.02 sec)

mysql> (select i,j from u1) union all (select i,j from u2);

+---+------+

| i | j |

+---+------+

| 1 | 1 |

| 2 | 2 |

| 3 | 1 |

| 1 | 1 |

| 2 | 2 |

| 3 | 3 |

+---+------+

6 rows in set (0.00 sec)

mysql> (select i,j from u1) union (select i,j from u2);

+---+------+

| i | j |

+---+------+

| 1 | 1 |

| 2 | 2 |

| 3 | 1 |

| 3 | 3 |

+---+------+

4 rows in set (0.00 sec)

oracle 中Union和Union all區別

以前一直不知道union和union all到底有什麼區別,今天來好好的研究一下,網上查到的結果是下面這個樣子,可是還是不是很理解,下面將自己親自驗證 union 對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序 union all 對兩個結果集進行並集操作,包括重複行,不進行排序 下...

Mysql中的Union和Union All查詢

union 用於合併兩個或多個 select 語句的結果集,並消去表中任何重複行。union 內部的 select 語句必須擁有相同數量的列,列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。select name from a union select name fr...

Oracle中Union與Union All的區別

如果我們需要將兩個select語句的結果作為乙個整體顯示出來,我們就需要用到union或者union all關鍵字。union 或稱為聯合 的作用是將多個結果合併在一起顯示出來。union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全...