我有一个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
答案 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);