我有一个旧数据库和一个新数据库。旧数据库具有各种用户组,每个用户组内都有用户。新数据库具有相同的用户组,但是偶然地,所有用户都被放入一个用户组中。
我有旧的用户名列表(或用户ID),我想将它们移到相应的用户组中。
如何使用SQL查询来做到这一点?
例如:
新数据库中的100个用户当前位于用户组“ 1”中,我想将其移至用户组“ 2”。用户组1已经有2,000个用户,所以我不能将所有用户都移到用户组2中。但是,为了选择他们,我列出了100个用户的用户ID(和用户名)。
相关的列名称为: “用户身份” “ usergroupid” “用户名”
,它们都在表“ user”中。
谢谢!
注意:旧数据库未连接到新数据库。我有逗号分隔格式的旧用户ID /用户名列表。
答案 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]