Почему только одна запись после объединения?
Вопрос
mysql> select count(id) total from applicants;
+-------+
| total |
+-------+
| 0 |
+-------+
1 row in set (0.00 sec)
mysql> select count(id) total from jobs;
+-------+
| total |
+-------+
| 0 |
+-------+
1 row in set (0.00 sec)
mysql> select count(id) total from applicants union select count(id) total from
jobs;
+-------+
| total |
+-------+
| 0 |
+-------+
1 row in set (0.00 sec)
mysql>
Разве не должно быть двух записей с " 0 " как его значение?
Решение
Union All даст два заявления. Union пытается объединить записи, или, скорее, удалить дублирующиеся строки.
Другие советы
Цитирование из руководства 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)
UNION удаляет дубликаты. Вместо этого попробуйте UNION ALL.