2010-11-30 5 views
0

sqlite3Zurückgegebene Spalte, die das Vorhandensein einer Zeile in einer anderen Tabelle anzeigt

Ich habe zwei Tabellen, Tabelle1 und Tabelle2.

Beide Tabellen haben eine Spalte namens Name.

Ich möchte Tabelle2 abfragen und die Spalte Name zurückgeben. Außerdem möchte ich eine Spalte zurückgeben, die die Werte 1 oder 0 enthält, abhängig davon, ob Zeilen in Tabelle1 auch denselben Wert für Name enthalten.

Was ist der effizienteste Weg, dies zu tun?

Ich bin auf der Suche nach so etwas wie:

SELECT 
    Name, IF EXISTS (SELECT * FROM Table1 WHERE Table1.Name = Table2.Name) 1 ELSE 0 
FROM 
    Table2 

Antwort

1

Sorry, bin ich mit SQLite nicht sehr vertraut, aber das sollte für Sie arbeiten. Der Trick ist ein Left Outer Join und Vergleich auf der verbundenen Tabelle.

SELECT 
    Table2.Name, 
    CASE WHEN Table1.Name IS NOT NULL THEN 1 ELSE 0 END 
FROM 
    Table2 
LEFT OUTER JOIN 
    Table1 ON Table1.Name = Table2.Name 

Ich bin nicht so sicher, dass die Syntax CASE das Beste ist, aber wenn Sie besser vertraut mit conditionals in SQLite sind, können Sie diesen Teil nach oben reinigen.

+0

Ich habe alles über CASE vergessen! Vielen Dank! – Andrew

Verwandte Themen