Ich habe derzeit 2 SQL-Tabellen: table1
und table2
. table1
hat 2 Spalten namens id_a
und column_a
. table2
hat 2 Spalten namens id_b
und column_b
.So erstellen Sie eine Spalte in einer SQL-Tabelle, basierend auf Werten einer anderen Tabelle
Ich möchte eine new_column
in table1
erstellen. Der Wert new_column
sollte 1 sein, wenn der Wert table1.id_a
in table2.id_b
existiert. Andernfalls sollte den Wert 0 haben.
Wie mache ich das? Ich verwende SQLite3 und table1
ist deutlich größer als table2
.
Vielen Dank! Warum wäre die Verwendung von 'left join' effizienter als eine einfache' exist' in der Unterabfrage? – puifais
Kein Problem! Es hängt vollständig von der Entscheidung des Optimierers ab, es überschreibt tatsächlich manchmal Unterabfragen als eine Verknüpfung. Der Perf Boost hat mit der Kardinalität des Tisches zu tun. Wobei die korrelierte Unterabfrage einmal für jede Zeile der Tabelle durchgeführt wird. Wie Sie sich vorstellen können, wächst mit dem Wachstum des Tisches auch die Leistung, die zur Ausführung der Abfrage benötigt wird. – pimbrouwers
Und wenn mein 'table1' viel größer ist als' table2', wird der einfache 'exists'-Unterabfrage-Ansatz schneller ausgeführt? – puifais