gpt4 book ai didi

database - 获取两个sql文件的差异

转载 作者:行者123 更新时间:2023-11-29 13:57:14 26 4
gpt4 key购买 nike

我想获得两个 sql 转储的差异。我必须将差异保存在新文件中。差异应该是合法查询!例如,如果我有一个包含以下内容的文件,

CREATE TABLE IF NOT EXISTS `newtable` (
`name` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `newtable` (`name`, `id`) VALUES
(1, 2);

第二个文件,

CREATE TABLE IF NOT EXISTS `newtable` (
`name` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `newtable` (`name`, `id`) VALUES
(1, 2),
(4, 5);

然后我会得到,

INSERT INTO `newtable` (`name`, `id`) VALUES
(1, 2),
(4, 5);

这怎么可能???

最佳答案

这是一种方法,假设两个表都没有重复项:

select (case when max(src) = 1 then 'DELETED'
else 'ADDED'
end) as what, name, id
from ((select 1 as src, name, id
from newtable1 t
) union all
(select 2 as src, name, id
from newtable2 t
)
) t
group by name, id
having count(*) = 1

这将返回是否从一个表向另一个表添加或删除行。您可以使用 insert 语句将这些结果插入到另一个表中或任何地方。

关于database - 获取两个sql文件的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15660365/

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