gpt4 book ai didi

sql - 根据字段插入行

转载 作者:行者123 更新时间:2023-12-01 13:57:59 24 4
gpt4 key购买 nike

我有一个临时表 Temp_Table,根据它的两个字段,我需要在其他表 Table1 和 Table2 中插入行

这些是实现这些的条件,

  1. 如果 Temp_Table.Field1 = Table1.Field1 和 Temp_Table.Field2 > Table1.Field2然后,将行从 Table1 移动到 Table2,并将行从 Temp_Table 复制到 Table1。

  2. 如果 Temp_Table.Field1 = Table1.Field1 且 Temp_Table.Field2 < Table1.Field2然后,将行从 Temp_Table 复制到 Table2。

  3. 如果 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

结果表:表一:

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

最佳答案

听起来好像有几个操作需要一起执行事务是使它们全部工作或全部失败的好方法。

我只提供了伪查询,因为实际使用的查询可能会随着您习惯于尝试执行的操作而发生变化。

概念:

  • 存储过程
  • TRY/CATCH block
  • 开始/提交/回滚交易
  • 左连接查询以检测丢失的记录

示例:

begin proc Abc as
begin
begin try
begin tran
--Step 1
Insert Table2 select Table1
Delete from Table1
insert into Table1 select TempTable
--Step 2
insert into Table2 select TempTable
--Step 3
insert into Table1 select TempTable left join Table1
commit tran
end try
begin catch
rollback tran
end catch
end

关于sql - 根据字段插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41411635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com