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

时间:2018-07-26 03:51:36

标签: mysql sql

我有一个旧数据库和一个新数据库。旧数据库具有各种用户组,每个用户组内都有用户。新数据库具有相同的用户组,但是偶然地,所有用户都被放入一个用户组中。

我有旧的用户名列表(或用户ID),我想将它们移到相应的用户组中。

如何使用SQL查询来做到这一点?

例如:

新数据库中的100个用户当前位于用户组“ 1”中,我想将其移至用户组“ 2”。用户组1已经有2,000个用户,所以我不能将所有用户都移到用户组2中。但是,为了选择他们,我列出了100个用户的用户ID(和用户名)。

相关的列名称为: “用户身份” “ usergroupid” “用户名”

,它们都在表“ user”中。

谢谢!

注意:旧数据库未连接到新数据库。我有逗号分隔格式的旧用户ID /用户名列表。

2 个答案:

答案 0 :(得分:1)

类似

df1 <- data.frame(x = 1)
df1$y <- list(c(1, 1))
df1
#>   x    y
#> 1 1 1, 1

df2 <- data.frame(x = 1:2)
df2$y <- list(c(1, 1), c(2, 2))
df2
#>   x    y
#> 1 1 1, 1
#> 2 2 2, 2

或在名称上选择有意义的名称。应该给你这个主意。

如果您有csv格式的ID列表(例如“ 0,5,9,25,35”等)而不是表格,则可以在评论中回答:

update user set usergroupid=2 
where userid in (select userid from old_user where usergroupid=2)

答案 1 :(得分:0)

由于您的旧用户已列在CSV文本文件中,因此您需要将该CSV导入到新数据库中。有几种方法可以执行此操作,但一种方法是按照以下堆栈溢出答案中的建议进行操作。将这些旧用户导入到名为OldSystemUser的表中。请按照以下说明进行操作: Load CSV into MySQL

OldSystemUser表中用户组2中的那些用户移动到新数据库中的用户组2中。通过在WHERE语句的UPDATE子句中使用子查询来完成此操作:

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]