表A
ID(int型) Name
1 张三
2 李四
3 小王
表B
ID List(varchar型)
1 1,2
根据表B的ID 1 需要查出结果:
ID Name
1 张三
2 李四
------解决思路----------------------
SELECT
A.*
FROM
(SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B) T0
OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
INNER JOIN A ON T1.ID=A.ID
你参考一下,有什么问题贴上来
------解决思路----------------------
修正如下
SELECT
A.*
FROM
(SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B) T0
OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
INNER JOIN A ON T1.List=A.ID
------解决思路----------------------
select a.* from b join a
on b.id=1 and chaindex(b.list,a.id)>0
或者
select * from b join a
on b.id=1 and a.id like'%'+b.list+'%'
------解决思路----------------------
根据表B的ID 1
可以这么做
SELECT
A.*
FROM
(SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B WHERE ID=1) T0
OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
INNER JOIN A ON T1.ID=A.ID
注意上面 WHERE ID=1的位置