基于另一个表中的记录在一个表中插入记录的sql过程

dsekswqp  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(285)

我有一张表格

| FormId | FormName | ParentLawId |  StartDate | Frequency |
|--------|----------|-------------|------------|-----------|
|      1 |    FormA |          21 | 2017-11-06 |   Monthly |
|      2 |    FormB |          22 | 2016-12-06 |    Yearly |
|      3 |    FormC |          24 | 2015-06-08 |  Quaterly |
|      4 |    FormD |          24 | 2018-02-11 |   Monthly |

我还有一张日历桌

| CalendarId | LawId |  StartDate | Frequency | FormId |
|------------|-------|------------|-----------|--------|
|          1 |    21 | 2017-11-06 |   Monthly |      1 |
|          2 |    24 | 2015-06-08 |  Quaterly |      3 |

我想在calendartable中为在calendartable中没有相应记录的窗体(在formtable中)插入记录。
例如,最终日历表应该是

| CalendarId | LawId |  StartDate | Frequency | FormId |
|------------|-------|------------|-----------|--------|
|          1 |    21 | 2017-11-06 |   Monthly |      1 |
|          2 |    24 | 2015-06-08 |  Quaterly |      3 |
|          3 |    22 | 2016-12-06 |    Yearly |      2 |
|          4 |    24 | 2018-02-11 |   Monthly |      4 |

所以,在calendartable中对应formid(formtable)列生成了2条新记录,calendartable中的其余列值应该与formtable中对应列中的值相同
两个表的模式的sql fiddle
http://sqlfiddle.com/#!9/e337d0/1号机组

rta7y2nd

rta7y2nd1#

在存储过程中使用此查询
note:keeping calender id为自动增量

insert into CalendarTable(LawId, StartDate, Frequency, FormId)
select ParentLawId,StartDate,Frequency,FormId
from FormTable  where formid not in(select formid from CalendarTable);

相关问题