MySQL查询有什么问题?

时间:2014-05-02 18:47:28

标签: 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

尝试进行此查询时出现此模糊错误?有什么建议吗?

3 个答案:

答案 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
    )