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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top