根据条件从较大的表创建较小的表

时间:2019-05-24 17:31:35

标签: mysql sql database

我有一个大表,我想根据大表的数据创建一些表,但是我不想更改大表。

考虑大表的模式:

人员(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

注意:...符号表示查询与学生查询相同,只是表名有所更改。

1 个答案:

答案 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';