【问题标题】:create smaller tables from a larger table based on a condition根据条件从较大的表创建较小的表
【发布时间】:2019-05-24 17:31:34
【问题描述】:

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

考虑大表的架构:

Person(id, Fname, Lname, ssn, role)

角色:人的角色可以是:经理、老师和学生。

现在我想要 3 个基于人员角色的小桌子。 老师(id, Fname, Lname, ssn)

学生(id, Fname, Lname, ssn)

经理(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

注意:...表示法表示查询与学生查询相同,但表名有所不同。

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    为每个表使用单独的插入:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多