Frage

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>

Gibt es eigentlich nicht zwei Datensätze werden mit „0“ als Wert?

War es hilfreich?

Lösung

Union Alle würden zwei Erklärungen geben. Union versucht, die Einträge zu kombinieren, oder besser gesagt, entfernen Sie die doppelten Zeilen.

Andere Tipps

aus dem Zitiert MySQL-Handbuch :

  

Das Standardverhalten für UNION ist, dass doppelte Zeilen entfernt von   das Ergebnis . Die optionale DISTINCT   Schlüsselwort hat keinen anderen Effekt als die   auch Standard, da es angibt,   Duplikat-row Entfernung. Mit dem   optional Schlüsselwort ALL, duplizieren-Reihe   tritt nicht auf, und das Ergebnis der Entfernung   umfasst alle passenden Zeilen aus allen   die SELECT-Anweisungen.

Das bedeutet, dass mit nur UNION, wenn zwei Zeilen den gleichen Wert haben, einer von ihnen wird nicht zurückgegeben werden:

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

Aber, wenn UNION ALL verwendet, Duplikate werden nicht entfernt:

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

UNION entfernt Duplikate. Versuchen Sie UNION ALL statt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top