【问题标题】:PHP MYSQL - Returning values that are not the samePHP MYSQL - 返回不同的值
【发布时间】:2012-04-04 02:39:51
【问题描述】:

我想比较两个表中的字段,看看这些字段的值是否相同。

例如
- 我有 2 张桌子,“产品”和“愿望清单”。
- 在两个表中,它们具有相同的字段“prodId”和“userId”,以及“title”等其他字段。
- “愿望清单”表包含“产品”表中的一些相同行
(例如,“产品”中总共有 10 行,但“愿望清单”表中只有 6 行相同)

- 我想显示表“产品”中与表“愿望清单”不同的字段/行,例如它只会显示 4(因此它不会显示 6 的重复项),
为此,我想在“产品”表中使用字段“prodId”和“userId”,并将其与“愿望清单”表中的相同字段。

我该怎么做?
谢谢。

【问题讨论】:

  • 比较到底是什么意思?如果您的意思是加入,那么您的答案如下,否则请详细说明比较的意思。

标签: mysql compare field


【解决方案1】:

JOIN 将返回在两个表中具有匹配值的所有记录:

SELECT *
FROM
    products p
    JOIN wishlist w ON w.userId = p.userId AND w.prodId = p.prodId


编辑:

返回所有不匹配的记录:

SELECT *
FROM
    products p
    FULL OUTER JOIN wishlist w ON w.userId = p.userId AND w.prodId = p.prodId
WHERE
    p.Id IS NULL
    OR w.Id IS NULL


编辑:

要在products 中显示与wishlist 不匹配的记录,请使用LEFT JOIN

SELECT *
FROM
    products p
    LEFT JOIN wishlist w ON w.userId = p.userId AND w.prodId = p.prodId
WHERE
    w.Id IS NULL

【讨论】:

  • 如果您想找到不匹配的值(显示不匹配的所有内容),您将如何执行此操作?
  • 您好,感谢您的回答;抱歉,我已经更新了我的问题,请问您能帮我解决这个问题吗?
  • @qwerty 尝试加入products匹配wishlist记录,但只返回在wishlist(w.Id IS NULL)中找不到匹配的记录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
  • 2014-10-30
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多