【数据库-MySql】[Err] 1052 - Column 'key1' in IN/ALL/ANY subquery is ambiguous

背景

[Err] 1052 - Column 'key1' in IN/ALL/ANY subquery is ambiguous

如下图所示,此语句同时应用的tb1与tb2,tb1与tb2又同时含有key1字段,当在条件中只指定字段名而不指定表名时,将报Err 1052的错误。由于在查询中没有指定表、视图的名称、别名。而多个表和表的别名都有同一字段,导致字段无法解析字段是哪个表或视图的字段。

INSERT INTO dbbackup.tb1 SELECT
	q.*
FROM
  tb2 p,
	tb1 q
WHERE(key1, key2) NOT IN (
	SELECT
		key1,
		key2
	FROM
		dbbackup.tb1
);

解决方案

在出错字段前加上指定表、视图的名称、别名。

INSERT INTO dbbackup.tb1 SELECT
	q.*
FROM
  tb2 p,
	tb1 q
WHERE(p.key1,p.key2) NOT IN (
	SELECT
		key1,
		key2
	FROM
		dbbackup.tb1
);
发布了384 篇原创文章 · 获赞 70 · 访问量 68万+

猜你喜欢

转载自blog.csdn.net/chenlu5201314/article/details/100523018
今日推荐