gpt4 book ai didi

MySQL 使用 MAX 进行 JOINS 更新

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

我不是 MySQL 专家。我正在尝试 update一张 table clients.converted来自projects.last_update专栏。

日期时间:clients.converted (截至目前的新专栏)。

日期时间:projects.last_update .

bool 值:projects.converted .

对于每个客户的项目,都可以结束使用 prospect-to-client 来结束该项目。 转换,如果是这样,(boolean) projects.converted我会吗TRUE .

我想要做的是 UPDATE关于 clients 的声明填写clients.converted来自MAX(projects.last_update) WHERE项目的projects.converted = true .

到目前为止,我已经尝试了几个查询,但这个查询以一种不太令人困惑的方式掌握了这个想法:

UPDATE clients AS `Client`
INNER JOIN projects AS `Project` ON Project.client_id = Client.id
SET Client.converted = MAX(Project.last_update)
WHERE Project.converted = TRUE;

但它不起作用(因为我不能直接在赋值时使用 MAX 函数)并且我已经没有关于如何执行 UPDATE 的想法了。与 JOINS使用MAX函数应用于 DATETIME专栏。

I did a SELECT statement to gather the information I need first and it works like a charm:

SELECT Client.id,  count(*), MAX(Project.last_update)  FROM projects AS `Project`
LEFT JOIN clients AS `Client` ON Client.id = Project.client_id
WHERE Project.converted = TRUE
GROUP BY Client.id;

非常感谢任何帮助!提前致谢。

最佳答案

MAX 是一个聚合函数,这意味着它不能(或者更确切地说,通常不应该)在没有 GROUP BY 的情况下使用;您需要使用子查询。

UPDATE clients AS `Client`
INNER JOIN (SELECT client_id, MAX(last_update) AS max_lu
FROM projects
WHERE converted = TRUE
GROUP BY client_id
) AS `Project` ON Project.client_id = Client.id
SET Client.converted = Project.max_lu
;

关于MySQL 使用 MAX 进行 JOINS 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54079581/

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