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;
好吧,我真的很抱歉,因为我的解释太糟糕了。谢谢大家的回答。
我会更好地解释输出应该是什么以及我的问题是什么。
因此,首先我有一个 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;