【发布时间】:2016-01-14 23:22:38
【问题描述】:
我正在寻找比较两个表并返回包含两个表之间差异的行的最佳方法。
//表A
CREATE TABLE `mydb`.`a` (
`id` int(10) unsigned NOT NULL,
`color` varchar(45) DEFAULT NULL,
`animal` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `mydb`.`a`
(id,color,animal)
VALUES
(1,"red",""),
(2,"blue","cat"),
(3,"green","dog");
(4,"orange","fish");
//表B
CREATE TABLE `mydb`.`b` (
`id` int(10) unsigned NOT NULL,
`color` varchar(45) DEFAULT NULL,
`animal` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `mydb`.`b`
(id,color,animal)
VALUES
(1,"red",""),
(2,"blue","cat"),
(3,"green","bird");
(4,"brown","fish");
该语句将返回表 B 的第 3,4 行,因为 bird 和 brown 与 dog 和 orange 不同。
【问题讨论】:
-
AND IS NOT NULL?? -
@Dagon 我应该在哪里插入?
-
你想达到什么输出?
-
@GordonLinoff 来生成差异,所以如果用户在 xls 上更改了某些内容然后加载它,它会转到表
facilities_update然后运行上面的语句,现在发生的事情是即使它们在facilities表和facilities_update中是一个空值(空白),即使它们没有不同,它们也都是空值。 -
@GordonLinoff 所以现在我对 xls 做了 4 处更改,所以它应该只提取这 4 行,但结果中包含任何具有空值的行
标签: php mysql sql database compare