gpt4 book ai didi

mysql - 从另一列更新具有最高值的 SQL 列

转载 作者:行者123 更新时间:2023-11-29 12:41:09 25 4
gpt4 key购买 nike

我会尽力让自己尽可能清楚。

我有两个表,一个名为 Users,另一个名为 Users_status。

表用户

column 1 : id (pk)
column 2 : status (fk)

表 Users_status

column 1 : user_id (fk)
column 2 : user_status (fk)

我想创建一个 cron 来验证 Users_status 表的第 2 列是否是最新的 Users_status 表的第 2 列表 Users_status 可能有多次 user_id 重复,并且 user_status 递增,如下所示:

表 Users_status

user_id : 1
user_status : 1

user_id : 1
user_status : 2

user_id : 1
user_status : 3

user_id : 2
user_status : 1

user_id : 2
user_status : 2

我希望通过 1 个请求,根据 Users_status 表中存在的最新(最高) user_status 更新 Users 表的第二列( status )我也不想更新已经具有良好状态的行(与表 Users_status 的状态相同)

如何做到这一点?我尝试了很多方法,当我认为这可行时,它要么只是将状态从 1 交换到 2,然后从 2 交换到 1,或者发生了一些 MYSQL 约束错误。

如果有人能帮助我,我真的很高兴

谢谢

最佳答案

您可以使用带有子查询的连接

UPDATE users
JOIN (SELECT
user_id,
MAX(status) status
FROM
users_status
GROUP BY user_id
) st
ON users.id = st.user_id
SET users.status = st.status
WHERE users.status < st.status

关于mysql - 从另一列更新具有最高值的 SQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104399/

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