【发布时间】:2016-12-31 20:51:27
【问题描述】:
我有一个临时表 Temp_Table,根据它的两个字段,我需要在其他表 Table1 和 Table2 中插入行
这些是实现这些的条件,
如果 Temp_Table.Field1 = Table1.Field1 和 Temp_Table.Field2 > Table1.Field2 然后,将该行从 Table1 移动到 Table2 并将行从 Temp_Table 复制到 Table1。
如果 Temp_Table.Field1 = Table1.Field1 并且 Temp_Table.Field2
如果 Temp_Table.Field1 在 Table1 中找不到任何匹配项,请将 Temp_Table 中的行复制到 Table1。
由于 Table1 和 Table2 都有触发器,所以 output 子句没有用。 Temp_Table 本身可能有 Field1 的重复值,因此需要对每一行进行检查。
我怎样才能仅通过 mySql 实现这一点?
我将尝试展示一些示例数据。所有表都没有自动生成的 id。
表1:
Id Field1 Field2 Field3
0 1 30 Dec 2016 data1
表2:
Id Field1 Field2 Field3
临时表:
Id Field1 Field2 Field3
1 1 29 Dec 2016 data2
2 2 31 Dec 2016 data3
3 2 01 Jan 2017 data4
结果表: 表1:
Id Field1 Field2 Field3
0 1 30 Dec 2016 data1
3 2 01 Jan 2017 data4
表2:
Id Field1 Field2 Field3
1 1 29 Dec 2016 data2
2 2 31 Dec 2016 data3
【问题讨论】:
-
@GordonLinoff,谢谢你的提醒。我已经相应地更改了标签。
-
请向我们展示一些示例数据以及最终结果应该是什么样子。
-
您尝试过简单的 INSERT/SELECT 吗?类似
insert into <destination> select <whatever> from <source> where <filter> -
@mauro,是的,但是 'where' 子句的 'filter' 给我带来了问题。
-
12 月 31 日...您是否在 varchar 列中保留日期?
标签: sql sql-server sql-server-2014