Почему только одна запись после объединения?

StackOverflow https://stackoverflow.com/questions/1431078

  •  07-07-2019
  •  | 
  •  

Вопрос

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top