gpt4 book ai didi

mysql - 使用 key 对更新记录

转载 作者:行者123 更新时间:2023-11-29 13:05:59 24 4
gpt4 key购买 nike

我需要更新 User 表记录,其中将用户的最大 endDate 替换为 null 值。空值将指示特定用户记录是当前记录。解释一下:该表跟踪每个用户的时间变化。这就是我现在正在做的事情。它有效,但 CONCAT 可能会很密集。还有其他方法比这更快吗?光标肯定更慢。已经尝试过了。

数据库是mysql

USE CUSTOMER;
CREATE TEMPORARY TABLE IF NOT EXISTS keyValuePairs
SELECT `user`, MAX(endDate)as mEndDate FROM `User` GROUP BY `user`;

UPDATE `User` SET `endDate` = NULL
WHERE CONCAT(`user`, `endDate`) IN
(SELECT CONCAT(`user`, `mEndDate`) FROM keyValuePairs);

最佳答案

甚至更快,您可以避免创建不必要的临时表:

UPDATE `User` u
LEFT JOIN `User` maxUser ON u.user = maxUser.user AND maxUser.endDate > u.endDate
SET u.`endDate` = NULL
WHERE maxUser.user IS NULL;

这会将任何没有对应的具有更大 endDate 的用户行的 endDate 设置为 NULL - 这将是该用户的最大 endDate。

工作 SQLFiddle here .

关于mysql - 使用 key 对更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693403/

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