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

时间:2018-12-11 05:51:56

标签: mysql sql

我有一个FormTable

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

我还有另一个CalendarTable

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

我想在CalendarTable中插入表单(在FormTable中)的记录,而这些表单在CalendarTable中没有各自的记录。

例如,最终的CalendarTable应该是

| 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中已生成2条与FormId(FormTable)列相对应的新记录,CalendarTable中的其余列值应与FormTable中的相应列相同。

两个表的模式的SQL Fiddle

http://sqlfiddle.com/#!9/e337d0/1

1 个答案:

答案 0 :(得分:1)

在存储过程中使用此查询

注意:将压延机ID保持为自动增量

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