作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
没有 SQL 经验,我希望有人能帮助我。
我有一个空的临时表,以及一个包含信息的表。
我的查询大纲如下:
CREATE TABLE [#Temp] (ID Int, Field1 Varchar)
INSERT INTO [#Temp]
SELECT ID, Field1
FROM [Other_table]
WHERE ID IN (ID1, ID2, ID3...)
因此,我将一大堆 ID 传递给查询,并且该 ID 对应于 Other_table
中的 ID,它必须使用此信息填充临时表。
是否可以在同一查询中保存与其他地方(例如另一个临时表)不匹配的 ID?或者在同一个临时表中,只是 Field1 = NULL?
我需要对不匹配的 ID 进行额外的工作,因此我需要在某个地方随时访问它们。我希望在这个查询中完成所有这一切,如果这是最快的方法的话。
编辑:
感谢您的帮助。
抱歉,我现在发现我的问题并不完全清楚。
如果 Other_table 包含 ID 1 - 1000,并且我传入 ID 999、1000 和 1001,我希望临时表包含 999 和 1000 的信息,然后还有一个 ID = 1001、Field1 = NULL 的条目。我不希望在 Field1 = NULL 的情况下返回 ID 1 - 998。
最佳答案
每个插入语句只能使用一个目标表。因此,将 field1
保留为 null 似乎是最简单的方法:
INSERT INTO [#Temp]
SELECT ID, CASE WHEN ID IN (ID1, ID2, ID3...) THEN Field1 END
FROM [Other_table]
case 语句将返回 null
id,该 ID 不在列表中。
更新
更新问题后,我会推荐以下内容:首先,将您在 in
运算符中使用的 id 列表插入到另一个临时表中:
create table #tempIDs (id int)
insert into #tempIDs values(id1), (id2), (id3), ....
然后只需使用简单的左连接:
INSERT INTO [#Temp]
SELECT t1.ID, Field1
FROM #tempIDs t1
LEFT JOIN [Other_table] t2 ON(t1.id = t2.id)
关于SQL INSERT INTO WITH SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911083/
我是一名优秀的程序员,十分优秀!