Цитирование из руководства MySQL :
Поведение по умолчанию для UNION состоит в том, что повторяющиеся строки удаляются из
результат . Необязательный DISTINCT
Ключевое слово не имеет никакого эффекта, кроме
по умолчанию, потому что он также указывает
удаление дубликатов строк. С
необязательное ключевое слово ALL, duplicate-row
удаление не происходит и результат
включает в себя все соответствующие строки из всех
операторы SELECT.
Это означает, что при наличии только UNION
, если две строки имеют одинаковое значение, одна из них не будет возвращена:
mysql> select 1 union select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
Но при использовании UNION ALL
дубликаты не удаляются:
mysql> select 1 union all select 1;
+---+
| 1 |
+---+
| 1 |
| 1 |
+---+
2 rows in set (0.00 sec)