Question

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’est-il pas supposé y avoir deux enregistrements avec " 0 " comme valeur?

Était-ce utile?

La solution

Union All donnerait deux déclarations. Union tente de combiner les entrées ou plutôt de supprimer les lignes en double.

Autres conseils

Citant le manuel MySQL :

  

Le comportement par défaut de UNION est que les lignes en double sont supprimées.   le résultat . Le DISTINCT optionnel   le mot clé n'a aucun effet autre que le   défaut car il spécifie également   suppression des doublons. Avec le   mot clé ALL facultatif, ligne en double   l'enlèvement ne se produit pas et le résultat   comprend toutes les lignes correspondantes de toutes   les instructions SELECT.

Ce qui signifie qu'avec UNION , si deux lignes ont la même valeur, l'une d'entre elles ne sera pas renvoyée:

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

Toutefois, si vous utilisez UNION ALL , les doublons ne sont pas supprimés:

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

UNION supprime les doublons. Essayez UNION ALL à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top