代码之家  ›  专栏  ›  技术社区  ›  user1788736

如何使用MySQL语句查找两个MySQL表之间的差异?

  •  0
  • user1788736  · 技术社区  · 12 年前

    我有两张桌子,分别叫MytableA和MytableB。MytableA保持609行,MytableB保持607行。两行具有相同的结构。我只想找出MytableA中存在哪些MytableB中不存在的图像URL,并显示那些缺失的行?有人能告诉我什么是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 回复  |  直到 12 年前
        1
  •  10
  •   Jonathan Leffler    12 年前
    SELECT *
      FROM MyTableA
     WHERE imageURL NOT IN (SELECT imageURL FROM MyTableB)
    

    也许有更快的方法可以做到这一点,但这有简洁的优点。

        2
  •  1
  •   Sergey Nikolaev    10 年前

    我想你在找这样的东西。它可能比subselect更好、更快。

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