如何使用MySQL语句找到两个MySQL表之间的区别?

时间:2013-09-23 16:51:46

标签: mysql

我有两个名为MytableA和MytableB的表。 MytableA拥有609行,MytableB拥有607行。两行都具有相同的结构。我只想找出MytableA中MytableB中不存在哪些imageURL,并显示那些丢失的行?谁能告诉我什么是MySQL语句来显示MytableB中缺少的行?

CREATE TABLE IF NOT EXISTS `MytableA` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `bio` varchar(90) DEFAULT NULL,
  `website` varchar(90) DEFAULT NULL,
  `profile` varchar(90) NOT NULL,
  `fullname` varchar(250) DEFAULT '',
  `diffId` varchar(250) NOT NULL DEFAULT '',
  `imageUrl` varchar(250) NOT NULL DEFAULT '',
  `PageURL` varchar(250) NOT NULL DEFAULT '',
  `CreatedTime` varchar(250) NOT NULL DEFAULT '',
  `imageTags` varchar(250) NOT NULL DEFAULT '',
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`ID`)
)

2 个答案:

答案 0 :(得分:9)

SELECT *
  FROM MyTableA
 WHERE imageURL NOT IN (SELECT imageURL FROM MyTableB)

可能有更快的方法,但这具有简洁的优点。

答案 1 :(得分:1)

我认为你正在寻找这样的东西。它可能比subselect更好更快。

SELECT * 
FROM tableA 
LEFT JOIN tableB ON tableA.field = tableB.field 
WHERE tableB.field is NULL;