[英]mysql - SELECT AND INSERT QUERY into multiple table with conditions
我不知道在MySQl中是否可能,但是我必須將舊數據庫表導入到新的規范化數據庫表中。 我在新表中有2個表user和user_roles,而前一個表只有admin
newdb.users Table user_id | username | password newdb.user_roles Table user_id | role_id
舊數據庫表
olddb.admin Table id | username | password | user_type 1 | user1 | *** | admin 3 | user7 | *** | staff
管理員role_id為1,職員role_id為2
因此,SQL插入后的新表應該看起來像。
newdb.users Table user_id | username | password 1 | user1 | *** 3 | user7 | *** newdb.user_roles Table user_id | role_id 1 | 1 3 | 2
如何使用MYSQL查詢。 謝謝。
您應該將這些信息基於roles
表:
create table roles (
int id auto_increment primary key,
role_name varchar(255)
);
insert into roles (role_name)
select distinct user_type
from old.admin;
然后:
insert into new.users(username, password)
select distinct username, password
from old.admin;
(如果在原始表中不重復username
則不需要distinct
。)
和:
insert into user_roles(user_id, role_id)
select u.id, r.id
from new.users u join
old.admin a
on u.user_name = a.user_name and
u.password = a.password join -- this condition may not be necessary
new.roles r
on a.user_type = r.role_name;
盡管您可以將值硬編碼到查詢中,但我認為讓數據庫為您完成工作是個好主意。 這種方法更為通用。
為了將角色從舊表插入新表:
INSERT INTO newdb.user_roles
SELECT
id,
CASE WHEN user_type='admin' THEN 1
WHEN user_type ='staff' THEN 2 END AS role_id
FROM olddb.admin
為了將用戶從舊表插入到新表:
INSERT INTO newdb.users
SELECT
id,
username,
password
FROM olddb.admin
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.