У меня есть старая база данных и новая база данных. В старой базе данных были разные группы пользователей с пользователями внутри каждой группы пользователей. В новой базе данных есть те же самые группы, но случайно, все пользователи были помещены только в одну группу.
У меня есть старый список имен пользователей (или ID пользователя), и я хочу переместить их в соответствующую группу.
Как я могу сделать это с помощью SQL-запроса?
Например:
100 пользователей в новой базе данных в настоящее время находятся в группе пользователей "1", которую я хочу переместить в группу "2". В группе 1 уже есть 2000 пользователей, поэтому я не могу просто переместить всех пользователей в группу 2. Но у меня есть список из 100 идентификаторов пользователей (и имен пользователей), чтобы их выбрать.
Соответствующие имена столбцов: "userid" "usergroupid" "имя пользователя"
и все они находятся в таблице "пользователь".
Спасибо!
Примечание. Старая база данных не подключена к новой базе данных. У меня есть список старых идентификаторов пользователя/имен пользователей в формате с разделителями-запятыми.
Что-то вроде
update user set usergroupid=2
where userid in (select userid from old_user where usergroupid=2)
Или выберите по именам, что имеет смысл. Должна дать вам эту идею.
В ответ на комментарий, если у вас есть список идентификаторов в форме csv, например "0,5,9,25,35" и т.д., А не таблица, тогда запрос будет выглядеть следующим образом:
update user set usergroupid=2
where userid in (0,5,9,25,35)
Поскольку ваши старые пользователи указаны в текстовом файле CSV, вам нужно будет импортировать этот CSV в свою новую базу данных. Есть несколько способов сделать это, но одним из способов было бы сделать это, как предложено в следующем ответе "Переполнение стека". Импортируйте этих старых пользователей в таблицу с именем OldSystemUser
. Следуйте инструкциям здесь: Загрузите CSV в MySQL
Переместите тех пользователей, которые находятся в группе пользователей 2 в таблице OldSystemUser
, в группу 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]