【发布时间】:2011-07-13 01:08:50
【问题描述】:
Table1 列:
clinic_code、schedule_date、schedule_time、source_id
Table2 列:
诊所代码、日程安排日期、日程安排时间
有一个存储过程可以做到:
1.删除表1中clinic_code='ABC' AND schedule_date=xyz的所有记录
2. 将 table2 中 table2.clinic_code='ABC' AND table2.schedule_date=xyz 的所有记录插入到 table1 中。
我想在第 2 步中进行更改。
*2。从 table2 中插入所有记录,其中 table2.clinic_code='ABC' AND table2.schedule_date=xyz,但不要覆盖 table1 中 source_id=2 的那些行。
这是第 2 步中的原始插入语句:
INSERT INTO table1 (col1, col2, col3)
SELECT table2.col1, table3.col2, table2.col3
FROM table2
INNER JOIN table3 ON table2.col3 = table3.col5 AND etc...
表格名称和其他列已被省略,如果有帮助,我可以输入确切的列数。
【问题讨论】:
-
但是你没有使用table1插入行,只是table2和table3。你不是说你不想在 table2.col3 = 2 的地方插入行吗?
-
没有。 Table1 和 table2 非常相似(但不完全一样)并且我不重复,所以如果 Table1.col3=2 中有一行,我不希望插入该行,其余的是。希望对您有所帮助,谢谢!
-
我必须说这没有任何意义。你的例子正确吗?如果您在 table1 中有一行 col3 等于值 2,则根本不会进行任何插入,因为它将始终有一行 table1 col3 为 2。关于 t1.col1 = t2.col1 和/或t1.col2 = t3.col2(这里的业务密钥是什么)?
-
谢谢 cairnz,我会用我认为会有所帮助的表格的更多详细信息来更新问题。
标签: sql sql-server-2005 tsql select insert