gpt4 book ai didi

mysql - SQL 语法适用于本地服务器但不适用于我的实时服务器?

转载 作者:行者123 更新时间:2023-11-29 06:57:31 25 4
gpt4 key购买 nike

如果 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

但我知道它会影响某些行。

我已经仔细检查了所有内容,但还是看不出查询无法正确通过的原因。我可能错过了某种设置吗?

亲切的问候,丹尼尔

最佳答案

是否有一些行的 product_id 为空?使用 NOT IN 时必须过滤掉这些:

UPDATE product
SET active = 0
WHERE id NOT IN (SELECT product_id FROM image WHERE product_id IS NOT NULL);

原因是 x NOT IN y 只能是 falseNULL 但永远不会 true if y包含一个 NULL 值。


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

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

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

关于mysql - SQL 语法适用于本地服务器但不适用于我的实时服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11861993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com