Pregunta

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>

¿No se supone que hay dos registros con " 0 " como su valor?

¿Fue útil?

Solución

Union All daría dos declaraciones. Union intenta combinar las entradas, o más bien, eliminar las filas duplicadas.

Otros consejos

Citando del manual MySQL :

  

El comportamiento predeterminado para UNION es que las filas duplicadas se eliminan de   el resultado . El DISTINCT opcional   la palabra clave no tiene otro efecto que el   predeterminado porque también especifica   eliminación de fila duplicada. Con el   palabra clave opcional ALL, fila duplicada   la eliminación no ocurre y el resultado   incluye todas las filas coincidentes de todas   las declaraciones SELECT.

Lo que significa que, con solo UNION , si dos líneas tienen el mismo valor, una de ellas no se devolverá:

mysql> select 1 union select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

Pero, si usa UNION ALL , los duplicados no se eliminan:

mysql> select 1 union all select 1;
+---+
| 1 |
+---+
| 1 |
| 1 |
+---+
2 rows in set (0.00 sec)

UNION elimina los duplicados. Prueba UNION ALL en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top