MySQL查询有什么问题?
我正在尝试删除从联接中吐出的表中的行:MySQL查询有什么问题?,mysql,Mysql,我正在尝试删除从联接中吐出的表中的行: DELETE FROM t1 WHERE company_name IN (SELECT company_name FROM t1 LEFT OUTER JOIN t2 ON t2.company_name = t1.company_name WHERE t2.name IS null) Column 'company_name' in field list is ambiguous 尝试进
DELETE FROM t1 WHERE company_name IN
(SELECT company_name FROM t1
LEFT OUTER JOIN t2
ON t2.company_name = t1.company_name
WHERE t2.name IS null)
Column 'company_name' in field list is ambiguous
尝试进行此查询时出现此不明确错误?有什么建议吗?试试看
DELETE FROM t1 WHERE company_name IN ( select * from (SELECT t1.company_name FROM t1 LEFT OUTER JOIN t2 ON t2.company_name = t1.company_name WHERE t2.name IS null) t )
如错误消息所示,列名
公司名称
不唯一。根据您的需要,如果您试图删除t1
中的条目,而该条目在t2
中没有对应的行,或者有一行但带有name
的条目为空,我相信这可能会解决您的问题:
DELETE FROM
t1
WHERE
company_name NOT IN (
SELECT
t2.company_name
FROM
t2
WHERE
t2.name IS NOT NULL
)
MySQL不喜欢在同一查询中尝试
更新
/删除
一个表并从同一个表中选择
您可以使用多表DELETE
语法解决此问题:
DELETE t1 FROM t1 LEFT OUTER JOIN t2 USING (company_name)
WHERE t2.name IS NULL;
选择公司名称
哪一个?t1
和t2
都有一个company\u name
字段。哈哈,从t1就可以看出,mysql无法理解这一点?这不是FROM
的意思。当您JOIN
时,您正在添加另一个表,因此它不知道是哪个表。您需要具体说明:选择t1.company\u name
。您不能在FROM子句中为更新指定目标表“t1”。为什么不能?我很确定这在大多数数据库管理系统上都有效。也许我遗漏了什么?好的,我用一种新的方法更改了查询,我想这符合您的意图。错误:您不能在FROM子句中为update指定目标表“t1”