繁体   English   中英

使用SQL查询移动特定的用户列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM