gpt4 book ai didi

mysql - SQL 根据多个匹配列值合并表

转载 作者:行者123 更新时间:2023-11-30 01:19:09 24 4
gpt4 key购买 nike

尝试合并具有以下结构的两个游戏服务器的表:

map |授权|名称 |时间 |日期 | ...

仅当 table2 的 time 值小于 table1 的值且仅当 mapauthid 时,我才想替换行> 值都是相同的。如果 table2 中的 time 值较大,则当前表 (table1) 中的行应保持不变。否则(在不同的 mapauthid 值上),table2 中的行应该简单地附加到 table1。

最佳答案

我的方法是第一:创建一个 View 来替换行,另一个 View 应附加正确的结果集,如

--查看更新
创建 View ChangeTable1作为select table2.map, table2.authid,table2.name, table2.date, table1.map as t1map, table1.authid as t1authid...从 table1 到 table2 上 table1.map=table2.map 和 table1.athid=表2.auid其中表1.时间>表2.时间

-- 追加 View
创建 View Add2Table1select table2.map, table2.authid,table2.name, table2.date... from table2 where concat(table2.map, table2.authid) not in (select concat(table1.map, table1.authid) from table1)

--基于第一个 View ChangeTable1更新语句
更新 ChangeTable1 设置 t1date=date, t1somevalue=somevalue......

--基于第二个 View Add2Table1插入语句

插入表1( map ,authid,名称,时间,日期,...作为从Add2Table1选择 map ,authid,名称,时间,日期,...

我希望这有帮助。我主要使用 MS SQL,因此可能存在一些语法问题需要转换为 MYSQL,Nils
如果您需要一个永久进程来执行此操作,您可以考虑将其放入存储过程中

关于mysql - SQL 根据多个匹配列值合并表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18754392/

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