MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Обяснение на оператора MariaDB UNION

В MariaDB, UNION оператор комбинира резултатите от множество SELECT изрази в един набор от резултати.

Синтаксис

Официалният синтаксис е така:

SELECT ...
UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]
[ORDER BY [column [, column ...]]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]

От MariaDB 10.4.0, скоби могат да се използват за определяне на приоритет.

Пример

Да предположим, че имаме следните таблици:

SELECT * FROM Teachers;
SELECT * FROM Students;

Резултат:

+-----------+-------------+
| TeacherId | TeacherName |
+-----------+-------------+
|         1 | Warren      |
|         2 | Ben         |
|         3 | Cathy       |
|         4 | Cathy       |
|         5 | Bill        |
|         6 | Bill        |
+-----------+-------------+

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|         1 | Faye        |
|         2 | Jet         |
|         3 | Spike       |
|         4 | Ein         |
|         5 | Warren      |
|         6 | Bill        |
+-----------+-------------+

Можем да използваме UNION оператор за връщане на всички учители и ученици:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

Резултат:

+-------------+
| TeacherName |
+-------------+
| Warren      |
| Ben         |
| Cathy       |
| Bill        |
| Faye        |
| Jet         |
| Spike       |
| Ein         |
+-------------+
8 rows in set (0.003 sec)

По подразбиране UNION оператор имплицитно прилага DISTINCT операция. С други думи, той връща само различни стойности по подразбиране. Така че горните резултати съдържат само по един от Уорън, Кати и Бил. Това е въпреки факта, че комбинираните таблици всъщност съдържат двама Уорън, две Кати и три Била (има двама учители, наречени Кати, учител и клиент, наречен Уорън, и двама, наречени Бил, както и един ученик, наречен Бил).

Ето пример, който изрично използва DISTINCT оператор:

SELECT TeacherName FROM Teachers
UNION DISTINCT
SELECT StudentName FROM Students;

Резултат:

+-------------+
| TeacherName |
+-------------+
| Warren      |
| Ben         |
| Cathy       |
| Bill        |
| Faye        |
| Jet         |
| Spike       |
| Ein         |
+-------------+
8 rows in set (0.004 sec)

Така получаваме същия резултат, който получихме без DISTINCT оператор.

Включване на дубликати

Можем да използваме ALL ключова дума, за да включите дублиращи се стойности в резултатите:

SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;

Резултат:

+-------------+
| TeacherName |
+-------------+
| Warren      |
| Ben         |
| Cathy       |
| Cathy       |
| Bill        |
| Bill        |
| Faye        |
| Jet         |
| Spike       |
| Ein         |
| Warren      |
| Bill        |
+-------------+
12 rows in set (0.002 sec)

Този път получихме дванадесет реда вместо осемте, които получихме в първия ни пример.

Можем да видим, че и двете Кати бяха върнати и трите законопроекта бяха върнати.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 функции за извличане на номера на седмицата от дата в MariaDB

  2. Как работи GET_FORMAT() в MariaDB

  3. Съвети и трик за използване на регистриране на одит за MariaDB

  4. MariaDB JSON_ARRAY() Обяснено

  5. Как да свържете C++ програми към MariaDB