逐行检查值

时间:2013-03-26 16:10:49

标签: sql sql-server-2005

我有2张这样的表:

表1:

CatID  Name
-----  ----
1      A
2      B
3      C

表2:

ID   CatID
---  -----
1    1
2    1
3    1
4    3

表2 CatID与table1 CatID相同。

我想要一个显示First表的查询,如果第二个表中存在CatID,则显示另一列为True,否则为False。上表的输出应为:

CatID  Name  Result
-----  ----  ------
1      A     True
2      B     False
3      C     True

2 个答案:

答案 0 :(得分:5)

您可以使用CASEEXISTS

SELECT CatID,
       Name,
       Result = CASE WHEN EXISTS(SELECT 1 
                                 FROM Table2 t2 
                                 WHERE t2.CatID=t1.CatId)
                THEN 'True' ELSE 'False' END
FROM Table1 t1

DEMO

答案 1 :(得分:0)

SQL Fiddle Demo


select distinct A.CARDID, NAME, CASE WHEN ISNULL(B.CARDID, 0)=0 THEN 'FALSE'
                            ELSE 'TRUE' END
FROM table1 A
LEFT JOIN table2 B
on A.CARDID = B.CARDID