SQL 如何在临时 table 条件下获取完整数组?

SQL How to get full Array in a temporary table with condition?

好吧,我真的很抱歉,因为我的解释太糟糕了。谢谢大家的回答。

我会更好地解释输出应该是什么以及我的问题是什么。

因此,首先我有一个 tagCode 数组,例如 ('code0'、'code1'、'code2')。 然后我有一个包含代码和 TagTypeId 的 table。

我想进入临时 table 我在数组中传递的所有代码及其 TagTypeId。所以 table 比如:

Code TagTypeId
903420012408181609019A18 2456
903420012408181609019A18 2135
TestCodeNull null

所以我的尝试是这样的:

SELECT Tags.Code AS tagCode, Tags.TagTypeId, TagTypes.Code AS tagType 
INTO #TempTable
FROM Tags JOIN TagTypes ON Tags.TagTypeId = TagTypes.Id 
WHERE Tags.Code IN ('903420012408181609019A18','90341808151313061101E938', 'TestCodeNull')
SELECT * FROM #TempTable;

但是我没有得到标签 table 中没有的代码。

我这样做了,它似乎按预期工作:

CREATE TABLE #TestTable (tagCode NVARCHAR(25) NOT NULL, TagTypeId INT NULL, tagType NVARCHAR(MAX))
INSERT INTO #TestTable (tagCode) VALUES ('903420012408181609019A18'),('00007E08190D0A34E1F524D0'),('00007E08190D0B25E1F5A98B')
UPDATE #TestTable SET TagTypeId = Tags.TagTypeId, tagType = TagTypes.Code FROM #TestTable
LEFT JOIN Tags ON (#TestTable.tagCode = Tags.Code)
LEFT JOIN TagTypes ON (Tags.TagTypeId = TagTypes.Id)
SELECT * FROM #TestTable;

我想你的意思是 'TestCodeNull' 在标签中不存在,所以你想为 'TestCodeNull' 显示空值,在这种情况下,连接可能更合适。例如

SELECT S.CODE,Tags.Code AS tagCode, Tags.TagTypeId, 
       TagTypes.Code AS tagType 
INTO #TempTable
FROM (select '903420012408181609019A18' code 
      union all select '90341808151313061101E938'
      union all select 'TestCodeNull') s
left join Tags on tags.code = s.code 
left JOIN TagTypes ON Tags.TagTypeId = TagTypes.Id 
 
SELECT * FROM #TempTable;