如何区分转换中的插入和更新

时间:2018-07-10 20:05:47

标签: sql database amazon-redshift data-warehouse

我在具有这些列的数据库中有此表

学生

student_id INT

student_name VARCHAR

class_name VARCHAR

我想将表格转换为两个表格

student_transformed

student_key 

student_id 

student_name

类已转换

class_key       

class_name

我的问题是在类表上进行转换:

要插入新记录:

select * 
  from student  s
  left
  join class_transformed  c
    on s.class_name = c.class_name

但是,如果在学生表中更新了class_name,它将是一条新的行记录。换句话说,无法区分插入和更新。

我的问题是,如何进行转换并使插入和更新工作?请注意,我们没有class_id。

1 个答案:

答案 0 :(得分:0)

我认为您需要另一个表:

Student_to_Class

Student_key

Class_key

那么这将起作用

select * 
  from student  s
left join Student_to_Class s2c
on s.student_key = s2c.student_key
  left join class_transformed  c
    on s2c.class_key= c.class_key