我正在使用 SQL Server 2008 R2。我有一些关于从两个表中获取数据的问题。
我有一个(第一个)表格显示如下:
在这个表中,我为第二个表存储了一组 id。
这是第二张表:
上图是具有主键的主表。
现在我想创建自定义表,从第一个表中读取数据并检查该 id 是否存在于第二个表中,如果是,那么我的自定义表应该有关于它的条目。我还想在我的自定义表中从两个表中获取其他记录。
任何解决方案将不胜感激。
最佳答案
在这里,我们将使用 PARSE NAME 使用 ID 值制作它们,然后将它们与现有记录的两个表进行比较
declare @table1 table (ID varchar(10))
insert into @table1(ID) values ('3,4,6'),('1,2,3'),('2,3'),('1,2,3'),('1,2')
declare @table2 table (ID int)
insert into @table2(ID) values(1),(2),(3),(4),(5),(6),(7),(8)
Declare @Custom Table (ID INT)
;WITH CTE AS (
SELECT
PARSENAME(REPLACE(Split.a.value('.', 'VARCHAR(100)'),'-','.'),1) 'ID'
FROM
(
SELECT
CAST ('<M>' + REPLACE([ID], ',', '</M><M>') + '</M>' AS XML) AS Data
FROM @table1
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a))
INSERT INTO @Custom (ID)
Select T.ID from @table2 T
WHERE EXISTS
(SELECT DISTINCT C.ID
FROM CTE C
WHERE T.ID = C.ID)
select * from @Custom
关于sql-server - 如何从两个不同的表创建自定义表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35359800/