[英]Moving a specific list of users using SQL query
我有一个旧数据库和一个新数据库。 旧数据库具有各种用户组,每个用户组内都有用户。 新数据库具有相同的用户组,但是偶然地,所有用户都被放入一个用户组中。
我有旧的用户名列表(或用户ID),我想将它们移到相应的用户组中。
我将如何使用SQL查询执行此操作?
例如:
新数据库中的100个用户当前位于用户组“ 1”中,我想移至用户组“ 2”。 用户组1已经有2,000个用户,所以我不能将所有用户都移到用户组2中。但是,为了选择他们,我列出了100个用户的用户ID(和用户名)。
相关的列名称为:“ userid”“ usergroupid”“ username”
它们都在“用户”表中。
谢谢!
注意:旧数据库未连接到新数据库。 我有逗号分隔格式的旧用户ID /用户名列表。
就像是
update user set usergroupid=2
where userid in (select userid from old_user where usergroupid=2)
或选择名称,只要有意义即可。 应该给你的想法。
如果您有csv格式的ID列表(例如“ 0,5,9,25,35”等)而不是表格,则可以在评论中作出答复,那么查询将是:
update user set usergroupid=2
where userid in (0,5,9,25,35)
由于您的旧用户已列在CSV文本文件中,因此您需要将该CSV导入到新数据库中。 有几种方法可以执行此操作,但一种方法是按照以下堆栈溢出答案中的建议进行操作。 将这些旧用户导入到名为OldSystemUser
的表中。 请按照此处的说明进行操作:将CSV加载到MySQL中
将OldSystemUser
表中用户组2中的那些用户移动到新数据库中的用户组2中。 通过在UPDATE
语句的WHERE
子句中使用子查询来执行此操作:
UPDATE [user]
SET [UserGroupId] = 2
WHERE [UserId] IN (
-- select all userIds that are in UserGroup 2 in the old database
SELECT [UserId]
FROM [OldSystemUser]
WHERE [UserGroupId] = 2
)
完成此操作后,不要忘记删除不再需要的旧表:
DROP TABLE [OldSystemUser]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.