Mysql SQL语法在本地服务器上工作,但在我的live server上不工作?

Mysql SQL语法在本地服务器上工作,但在我的live server上不工作?,mysql,where,Mysql,Where,如果另一个表中不存在ID,我将尝试运行SQL查询来更新表。 问题是: UPDATE product SET active = 0 WHERE id NOT IN (SELECT product_id FROM image); 此查询在我的本地服务器(运行apache/mysql)上正常工作。 但在我的专用服务器(也运行apache/mysql)上,它只返回以下内容: Query OK, 0 rows affected (0.19 sec) Rows matched: 0 Changed: 0

如果另一个表中不存在ID,我将尝试运行SQL查询来更新表。 问题是:

UPDATE product
SET active = 0
WHERE id NOT IN (SELECT product_id FROM image);
此查询在我的本地服务器(运行apache/mysql)上正常工作。 但在我的专用服务器(也运行apache/mysql)上,它只返回以下内容:

Query OK, 0 rows affected (0.19 sec)
Rows matched: 0  Changed: 0  Warnings: 0
但我知道这会影响一些争吵

我已经仔细检查了所有内容,但不明白为什么查询无法正确通过。 也许我错过了什么场景

亲切问候,,
Daniel

是否有某些行的产品id为空?当使用“不在”时,必须将其过滤掉:

UPDATE product
SET active = 0
WHERE id NOT IN (SELECT product_id FROM image WHERE product_id IS NOT NULL);
原因是如果y包含
NULL
值,则
x不在y中
只能是
false
NULL
,而不能是
true


您还可以使用其他方法中的一种来查找出现在一个表中而不出现在另一个表中的值。例如,使用存在:

UPDATE product
SET active = 0
WHERE NOT EXISTS (SELECT * FROM image WHERE product_id = product.id);

这种方法对
NULL
值没有同样的问题。

好吧,它们不存在,这就是我试图获取的。@DanielRunnakkoLöfgren:你试过运行我发布的查询吗?它给了你想要的结果吗?我的错。你完成了任务。谢谢你的回复!