gpt4 book ai didi

mysql - 如果记录在另一表中不存在,则 SQL 更新一个表

转载 作者:行者123 更新时间:2023-12-04 01:31:25 24 4
gpt4 key购买 nike

SELECT c.*
FROM customers c LEFT JOIN
invoices i
ON i.customer_id = c.id
WHERE i.customer_id IS NULL

以上工作为我提供了所有没有发票的客户帐户。运行需要很长时间,但我不关心速度。我可能一年只运行几次。

当帐户没有发票时,我无法正确更新客户表中的记录。我尝试了许多不同的方法来实现这一点,但总是出现语法错误。

一种尝试如下...
UPDATE c
SET active=0
FROM customers c LEFT JOIN
invoices i
ON i.customer_id = c.id
WHERE i.customer_id IS NULL

当我尝试运行它时,我在 Join 中遇到语法错误。

最佳答案

正确的 MySQL 语法是:

UPDATE customers c LEFT JOIN
invoices i
ON i.customer_id = c.id
SET active = 0
WHERE i.customer_id IS NULL;
JOIN的使用在 UPDATE是特定于数据库的。例如,MySQL 不支持 FROM UPDATE 中的条款(SQL Server 和 Postgres 可以)。

适用于任何数据库的标准语法是:
UPDATE customers
SET active = 0
WHERE NOT EXISTS (SELECT 1 FROM invoices i WHERE i.customer_id = customers.id);

关于mysql - 如果记录在另一表中不存在,则 SQL 更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601388/

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