【问题标题】:Unknown column in 'where not exists clause''where not exists 子句'中的未知列
【发布时间】: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 列名,两次。

标签: mysql mysql-error-1054


【解决方案1】:

只需翻转您的表名即可。请记住,您正在尝试将值插入到 table1 FROM table2 中,而 TABLE1.

将查询更改为:

 INSERT INTO test1 
 SELECT * FROM test2 b 
 WHERE NOT EXISTS(SELECT * FROM test1 c WHERE c.go = b.go);

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 2019-05-18
    • 2016-01-09
    • 2011-06-03
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多