SQL - 从两个表中识别匹配值/记录

时间:2013-11-22 14:18:15

标签: mysql sql

我有两张桌子:

  1. tblCurrent
  2. tblHistory
  3. 在每个表格中,我都有一个代表产品ID的ID字段

    1. tblCurrent - prodID
    2. tblHistory - histID
    3. 这些ID(产品ID)是相同的。

      我正在尝试编写一个SQL语句,用于标识tblCurrent中存在但不在tblHistory中的ID

      ...以及另一个标识两个表中存在的ID的语句

      我试过了:

      SELECT Distinct prodID
       FROM tblCurrent
      INTERSECT
      SELECT histID
       FROM tblHistory
      

      任何帮助表示赞赏

2 个答案:

答案 0 :(得分:3)

对于tblCurrent而不是tblHistory中的ID:

SELECT c.prodId FROM tblCurrent c
LEFT JOIN tblHistory h ON c.prodId = h.histId
WHERE c.prodId IS NULL

对于两者中存在的ID:

SELECT c.prodId FROM tblCurrent c
JOIN tblHistory h ON c.prodId = h.histId

请注意,如果它们确实是ID(唯一),那么您不需要DISTINCT,因为每个都不会有多行。

答案 1 :(得分:1)

您可以使用NOT INNOT EXISTS

SELECT Distinct prodID
 FROM tblCurrent WHERE prodID
NOT IN(
SELECT histID
 FROM tblHistory )

SELECT Distinct prodID
 FROM tblCurrent WHERE 
NOT EXISTS(
SELECT * 
 FROM tblHistory )


SELECT Distinct prodID
 FROM tblCurrent WHERE 
NOT EXISTS(
SELECT * 
 FROM tblHistory WHERE histID = tblCurrent.prodID )

NOT EXISTS