2012-10-09 4 views
11

Ich frage mich, ob ich verwenden kann, existiert (oder so ähnlich) in der Spalte wie folgt aus:T-SQL Verwendung VORHANDEN als Spalte

SELECT Column1, 
     Column2, 
     EXISTS (SELECT 1 FROM Table2 T2 WHERE T2.Column = T1.Column) AS IsFlag 
FROM Table1 

Ich weiß, dass ich etwas ähnliches mit dem Grafen tun()

SELECT Column1, 
     Column2, 
     (SELECT Count(*) FROM Table2 T2 WHERE T2.Column = T1.Column) AS IsFlag 
FROM Table1 

Aber das ist vielleicht nicht sehr effizient sein, wenn Table2 groß ist

Antwort

15

Versuchen Sie, diese

SELECT Column1, 
     Column2, 
     CASE WHEN EXISTS (SELECT 1 FROM Table2 T2 
     WHERE T2.Column = T1.Column) then 1 ELSE 0 END AS IsFlag 
FROM Table1 
+0

Nach Tabelle1 fehlt ein T1. Andernfalls weist der Ausdruck = in EXISTS einen Syntaxfehler auf. – Christoph

6
CASE 
    WHEN 
     EXISTS (SELECT 1 FROM Table2 T2 WHERE T2.Column = T1.Column) 
    THEN 1 
    ELSE 0 
END AS IsFlag