Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询有什么问题?_Mysql - Fatal编程技术网

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”