日期:2014-05-19  浏览次数:20481 次

恳求SQL语句
表A:
id
a
b
c
d

表B:
id
a
c
a
c
a

结果:
a             1
b             0
c             1
d             0

要求:存储过程中处理,可多步,但不能用游标,即不能单笔循环处理
逻辑:对于A表中的id,如果存在于B表中(不论多少),则数量标记为1,否则为0

还请不吝赐教,谢谢


------解决方案--------------------
select a,case when exists(select 1 from b where b.id = a.id) then 1 else 0 end as count from a
------解决方案--------------------
--建立測試環境
Create Table A
(id Varchar(10))
Insert A Select 'a '
Union All Select 'b '
Union All Select 'c '
Union All Select 'd '

Create Table B
(id Varchar(10))
Insert B Select 'a '
Union All Select 'c '
Union All Select 'a '
Union All Select 'c '
Union All Select 'a '
GO
--測試
Select
A.id,
(Case When B.id Is Not Null Then 1 Else 0 End) As 标记
From
A
Left Join
(Select Distinct id From B) B
On A.id = B.id
GO
--刪除測試環境
Drop Table A, B
--結果
/*
id 标记
a 1
b 0
c 1
d 0
*/