我会尽力让自己尽可能清楚。
我有两个表,一个名为 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/