表1:
Id | Name
1 | Example1
2 | Example2
表2:
Id | Table1_IDs
1 | 1,2
2 | 2
我想使用table1_IDs
从table2中选择table1,如:
select *
from table1
where id in (select t.table1_IDs from table2 t)
答案 0 :(得分:0)
您可以构建查询字符串end,然后使用sp_executesql
存储过程来运行它。这样的事情(未经测试)
declare @ids varchar(2000)
select @ids = coalesce(@ids + ',', '') + convert(varchar(100), table1_IDs)
from table2
declare @query nvarchar(2000) = 'select * from table1 where id in (' + @ids + ')'
execute sp_executesql @query
但是,使用昏迷分离值并不是一个好主意,因为它会降低性能。尝试重构你的表格。
答案 1 :(得分:0)
具有相同结构的任何其他选项?
select * from table1 ta join
(
SELECT id,
LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS Certs
from (
SELECT id,CAST('<XMLRoot><RowData>' + REPLACE(value,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x
FROM table2
) t
CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)) b on b.id=ta.id
将table table2逗号删除为行,并与Join中的Table1一起使用。