【发布时间】:2016-06-15 17:17:17
【问题描述】:
对于“不存在”类型的插入,有很多答案希望您指定要插入的列。我有超过 400 列,并且两个表具有相同的架构。
对于未知列也有很多答案,但我无法在 insert where not exists 语句中找到答案。我无法理解这个问题,希望这里有人能提供帮助。
这里是 sql fiddle http://sqlfiddle.com/#!9/70a34b/1
这是我尝试过的几个查询之一:
INSERT INTO test1
SELECT * FROM test2 b
WHERE NOT EXISTS(SELECT * FROM test2 c WHERE test1.go = c.go);
我在“where 子句”中收到错误未知列“test1.go”
【问题讨论】:
-
这里的问题是 test1 不在范围内,因为它是插入的一部分,而不是选择的一部分。
INSERT INTO test1 SELECT * FROM test2 b WHERE b.go not in (Select go from test1); -
@Ryan。检查反引号是我做的第一件事,这不是问题所在。如果我还没有花一个小时测试它并创建 sqlfiddle,我不会发布这个问题。@xQbert,你说得对,它超出了范围,但有几列必须匹配才能排除插入的一行。你怎么能做到这一点并匹配多个列。我还有其他查询,我在其中指定要插入的列并且它可以工作,但是一揽子 select * 使这个无法正常工作,我真的不想在 select 语句中输入 408 列名,两次。