Tabelle1 (ID, Name)
Tabelle2 (ID, Name)
Abfrage:
SELECT name
FROM table2
-- that are not in table1 already
quelle
Tabelle1 (ID, Name)
Tabelle2 (ID, Name)
Abfrage:
SELECT name
FROM table2
-- that are not in table1 already
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
F : Was passiert hier?
A : Konzeptionell wählen wir alle Zeilen aus table1
und versuchen für jede Zeile eine Zeile table2
mit demselben Wert für die name
Spalte zu finden. Wenn es keine solche Zeile gibt, lassen wir einfach den table2
Teil unseres Ergebnisses für diese Zeile leer. Dann beschränken wir unsere Auswahl, indem wir nur die Zeilen im Ergebnis auswählen, in denen die übereinstimmende Zeile nicht vorhanden ist. Schließlich ignorieren wir alle Felder aus unserem Ergebnis mit Ausnahme der name
Spalte (von der wir sicher sind, dass sie existiert table1
).
Obwohl dies möglicherweise nicht in allen Fällen die leistungsfähigste Methode ist, sollte es in praktisch jeder Datenbank-Engine funktionieren, die jemals versucht, ANSI 92 SQL zu implementieren
Sie können entweder tun
oder
In dieser Frage finden Sie drei Techniken, um dies zu erreichen
quelle
Ich habe nicht genug Wiederholungspunkte, um die zweite Antwort abzustimmen. Aber ich muss den Kommentaren zur Top-Antwort nicht zustimmen. Die zweite Antwort:
Ist in der Praxis weitaus effizienter. Ich weiß nicht warum, aber ich arbeite mit mehr als 800.000 Datensätzen und der Unterschied ist enorm, mit dem Vorteil, den die zweite Antwort oben hat. Nur meine $ 0,02
quelle
Dies ist eine reine Mengenlehre, die Sie mit der
minus
Operation erreichen können.quelle
https://www.cloudways.com/blog/how-to-join-two-tables-mysql/
quelle
Achten Sie auf Fallstricke. Wenn das Feld
Name
inTable1
Nullen enthält, werden Sie überrascht sein. Besser ist:quelle
Folgendes hat für mich am besten funktioniert.
Dies war mehr als doppelt so schnell wie jede andere Methode, die ich ausprobiert habe.
quelle
Sie können
EXCEPT
in mssql oderMINUS
in oracle verwenden, sie sind identisch nach:http://blog.sqlauthority.com/2008/08/07/sql-server-except-clause-in-sql-server-is-similar-to-minus-clause-in-oracle/
quelle
Das funktioniert scharf für mich
quelle
Siehe Abfrage:
Konzeptionell wäre: Abrufen der übereinstimmenden Datensätze in der Unterabfrage und anschließendes Abrufen der Datensätze, die sich nicht in der Unterabfrage befinden.
quelle
Ich werde die richtige Antwort erneut posten (da ich noch nicht cool genug bin, um sie zu kommentieren) ... falls jemand anderes der Meinung ist, dass es einer besseren Erklärung bedarf.
Und ich habe gesehen, dass Syntax in FROM Kommas zwischen Tabellennamen in mySQL benötigt, aber in sqlLite schien es den Platz zu bevorzugen.
Wenn Sie falsche Variablennamen verwenden, bleiben unter dem Strich Fragen zurück. Meine Variablen sollten sinnvoller sein. Und jemand sollte erklären, warum wir ein Komma oder kein Komma brauchen.
quelle
Wenn Sie einen bestimmten Benutzer auswählen möchten
Das
tent_npk
ist ein Primärschlüssel eines Benutzersquelle