我有一个大表,我想根据大表的数据创建一些表,但是我不想更改大表。
考虑大表的模式:
人员(id,Fname,Lname,ssn,角色)
角色:人的角色可以是:经理,老师和学生。
现在我要根据人员的角色选择3个较小的表。 教师(id,Fname,Lname,ssn)
学生(id,Fname,Lname,ssn)
Manager(id,Fname,Lname,ssn)
我正在寻找类似以下的查询,但是我不知道正确的语法。
select *
case
when P.role = 'student' then insert into Student(id, Fname, Lname, ssn) values (P.id, P.Fname, P.Lname, P.ssn)
when P.role = 'teacher' then ...
when P.role = 'manager' then ...
end
from person as P
注意:...符号表示查询与学生查询相同,只是表名有所更改。
答案 0 :(得分:0)
为每个表使用单独的插入物:
insert into student ( id, Fname, Lname, ssn )
select P.id, P.Fname, P.Lname, P.ssn
from person p
where p.role = 'student';
以此类推。
或者,只需使用视图:
create view v_students as
select P.id, P.Fname, P.Lname, P.ssn
from person p
where p.role = 'student';