Por apenas um registro após a união?
Pergunta
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>
não está lá suposto ser dois registros com "0" como o seu valor?
Solução
União Todos daria duas declarações. tentativas da União para combinar as entradas, ou seja, remover as linhas duplicadas.
Outras dicas
Citando o MySQL manual:
O comportamento padrão para UNION é que as linhas duplicadas são removidas o resultado . O opcional DISTINCT palavra-chave não tem efeito diferente do padrão porque ele também especifica remoção duplicado-linha. Com o opcional ALL palavra-chave, duplicado-row remoção não ocorre eo resultado inclui todas as linhas correspondentes de todo as instruções SELECT.
O que significa que, com apenas UNION
, se duas linhas têm o mesmo valor, um deles não serão devolvidos:
mysql> select 1 union select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
Mas, se estiver usando UNION ALL
, duplicatas não são removidos:
mysql> select 1 union all select 1;
+---+
| 1 |
+---+
| 1 |
| 1 |
+---+
2 rows in set (0.00 sec)
UNION remove duplicatas. Tente UNION ALL em vez.