我正在尝试从连接中吐出的表中删除行:
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
尝试进行此查询时出现此模糊错误?有什么建议吗?
答案 0 :(得分:1)
当你在同一个查询中尝试UPDATE
/ DELETE
一个表和SELECT
时,MySQL不喜欢它。
您可以使用多表DELETE
语法解决此问题:
DELETE t1 FROM t1 LEFT OUTER JOIN t2 USING (company_name)
WHERE t2.name IS NULL;
答案 1 :(得分:0)
试试
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 )
答案 2 :(得分:0)
由于错误消息告知列名company_name
不唯一。根据您的需求,我相信这可以解决您的问题,因为您尝试删除t1
中没有t2
中的相应行或只有name
的相应行的条目1}}为null:
DELETE FROM
t1
WHERE
company_name NOT IN (
SELECT
t2.company_name
FROM
t2
WHERE
t2.name IS NOT NULL
)