【问题标题】:Find uncommon data from two tables in mysql从mysql中的两个表中查找不常见的数据
【发布时间】:2014-01-18 05:57:23
【问题描述】:

我正在使用类别、产品关系来查找数据。我的情况就像我有一个带有 categoryid 和产品类型的类别表和产品表。不,假设我有一个特定类型,我想找到特定类型的产品没有的那些类别。 表结构是这样的

Category Table
____________
|Id|Category|
| 1|    X   |
_____________

Product Table
____________________________
|ID | Product|Category| Type|
| 1 | Y      | 1      | 2   |
_____________________________

我可以使用类似的子查询找到它

SELECT * 
FROM   category 
WHERE  id NOT IN(SELECT category 
                 FROM   product 
                 WHERE  type = 2); 

有没有办法通过其他方式得到它

我也使用类似 JOIN 的方法

SELECT * 
FROM   category AS c 
       JOIN products AS p 
         ON c.id <> p.category 
WHERE  p.type = 2 

为什么这没有给出适当的结果。

【问题讨论】:

  • 如果你有a JOIN b ON a.id &lt;&gt; b.id,你正在做的是join each row from 'a' and join it to every row from 'b' where the id's are different

标签: php mysql sql join


【解决方案1】:

使用LEFT JOIN 并使用IS NULL 谓词:

SELECT * 
FROM   category AS c 
       LEFT JOIN products AS p 
              ON c.id = p.category 
                 AND p.type = 2 
WHERE  p.category IS NULL; 

第二个表中不匹配的行将在category 字段中具有空值,WHERE p.category IS NULL 将过滤并提供给您

【讨论】:

    猜你喜欢
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多