2012-10-09 33 views
11

Tôi đang tự hỏi liệu tôi có thể sử dụng EXISTS (hoặc một cái gì đó tương tự) trong cột như thế này:T-SQL sử dụng EXISTS như Cột

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

Tôi biết tôi có thể làm điều gì đó tương tự với Count()

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

Nhưng điều đó có thể không phải rất hiệu quả khi Table2 là lớn

Trả lời

15

Hãy thử điều này

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

Thiếu T1 sau Bảng 1. Nếu không, biểu thức = bên trong EXISTS có lỗi cú pháp. – Christoph

6
CASE 
    WHEN 
     EXISTS (SELECT 1 FROM Table2 T2 WHERE T2.Column = T1.Column) 
    THEN 1 
    ELSE 0 
END AS IsFlag 
Các vấn đề liên quan