我正在使用 SQL Server 2008 R2。我有一些关于从两个表中获取数据的问题。

我有一个(第一个)表格显示如下:

sql-server - 如何从两个不同的表创建自定义表-LMLPHP

在这个表中,我为第二个表存储了一组 id。

这是第二张表:

sql-server - 如何从两个不同的表创建自定义表-LMLPHP

上图是具有主键的主表。

现在我想创建自定义表,从第一个表中读取数据并检查该 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/

10-15 14:25