当前位置:Gxlcms > 数据库问题 > [原]用SQL比较两张结构完全相同的表数据

[原]用SQL比较两张结构完全相同的表数据

时间:2021-07-01 10:21:17 帮助过:32人阅读

TABLE `test_a` ( `trade_id` varchar(20) NOT NULL, `user_id` varchar(20) DEFAULT NULL, `amount` double DEFAULT NULL, PRIMARY KEY (`trade_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `test_b` ( `trade_id` varchar(20) NOT NULL, `user_id` varchar(20) DEFAULT NULL, `amount` double DEFAULT NULL, PRIMARY KEY (`trade_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

INSERT INTO `test_a` (`trade_id`,`user_id`,`amount`) VALUES (t0001,u0001,100);
INSERT INTO `test_a` (`trade_id`,`user_id`,`amount`) VALUES (t0002,u0005,29.8);
INSERT INTO `test_a` (`trade_id`,`user_id`,`amount`) VALUES (t0003,u0002,3050);
INSERT INTO `test_a` (`trade_id`,`user_id`,`amount`) VALUES (t0004,u0003,128.4);
INSERT INTO `test_a` (`trade_id`,`user_id`,`amount`) VALUES (t0005,u0004,33.7);

INSERT INTO `test_b` (`trade_id`,`user_id`,`amount`) VALUES (t0001,u0001,100);
INSERT INTO `test_b` (`trade_id`,`user_id`,`amount`) VALUES (t0002,u0005,29.8);
INSERT INTO `test_b` (`trade_id`,`user_id`,`amount`) VALUES (t0003,u0002,3050);
INSERT INTO `test_b` (`trade_id`,`user_id`,`amount`) VALUES (t0004,u0003,128.4);
INSERT INTO `test_b` (`trade_id`,`user_id`,`amount`) VALUES (t0005,u0004,33.7);
INSERT INTO `test_b` (`trade_id`,`user_id`,`amount`) VALUES (t0006,u0006,19.6);

 

select * from test_a where concat(concat(trade_id,user_id),amount) not in(
select concat(concat(a.trade_id,a.user_id),a.amount) from test_a as a left join test_b as b on a.trade_id=b.trade_id)
union
select * from test_b where concat(concat(trade_id,user_id),amount) not in(
select concat(concat(a.trade_id,a.user_id),a.amount) from test_a as a left join test_b as b on a.trade_id=b.trade_id)

思路:先将两张表相同的数据找出来,然后分别用表A和表B和找出来相同数据作对比得出差异,最后把差异数据union,可能我这不是最好的方法,谁有更好的方法可以告诉我。

 

[原]用SQL比较两张结构完全相同的表数据

标签:告诉   key   ble   这不   等于   table   好的   ima   user   

人气教程排行