我有一个USERS
表和一个LOGS
表。 LOGS
表已标准化,直到最近才存储user_id
,当我决定出于性能原因而对其进行非规范化时。完成此更改后,我还会将username
和user_role
列作为LOGS
表的一部分。
现在我需要更新LOGS
表的现有记录,根据username
列的值填写user_role
和user_id
列,以便数据变为是一致的。如何实现这一目标?我正在寻找可以在数据库服务器上运行的SQL脚本。
阿西
答案 0 :(得分:1)
使用类似的东西。您只需加入用户表
即可UPDATE LOGS l
INNER JOIN users u ON u.id=l.user_id
SET l.username=u.name,
l.user_role=u.role
WHERE ... if necessary
更新:
UPDATE LOGS l
INNER JOIN (select l.id as log_id, u.*
from logs l join users u ON u.id=l.user_id
order by l.id
limit 10) sub ON sub.id=l.id
SET l.username=sub.name,
l.user_role=sub.role