我有两个桌子, 示例表A-带有数据
A
ID value
1 aa@test.com,bb@test.com
B
ID Email
1 aa@test.com
2 bb@test.com
3 cc@test.com
我需要表B中与表A匹配的记录
Select * from B where Email IN (select * from A where ID=1)
我不想使用动态查询。 我已经尝试过-
Select * from B where Email IN (select REPLACE(stuff((select ',' + ''''+
cast(value as varchar(max)) + '''' from A where ID=1
for xml path('')), 1, 1, ''),',',''','''))
但未显示任何结果。
请帮助我。
答案 0 :(得分:2)
您应该修复数据结构。一种简单的方法使用like
:
select b.*
from b
where exists (select 1
from a
where ',' + a.email + ',' like '%,' + b.email + ',%';
性能会很糟糕,但这就是您为一个非常糟糕的数据结构所付出的代价。
答案 1 :(得分:2)
尝试此代码:
Select *
from B
inner join A on ',' + A.email + ',' like '%,' + B.email + ',%';