【问题标题】:Mysql - Inner Join - get the non associate resultsMysql - Inner Join - 获取非关联结果
【发布时间】:2016-06-29 05:35:22
【问题描述】:

我需要做一个查询。 例如,我有产品和子产品。子产品可以关联到产品,所以我需要一个查询,给我不关联到某个产品的子产品的结果。 我做了一个内部连接,但不正确。

SELECT * 
FROM subProducts 
    INNER JOIN products on subProducts.id != products.idSubProduct 
WHERE products.id = $idProduct

谢谢

【问题讨论】:

  • 这已被多次询问:stackoverflow.com/questions/13863751/…。考虑到您正在尝试链接除匹配项之外的任何内容,您的查询将持续运行,该匹配项可能是每一行的整个表的其余部分。我猜你根本无法完成这个,这取决于你有多少数据。

标签: mysql sql inner-join


【解决方案1】:

使用outer join 代替null 检查:

SELECT * 
FROM subProducts 
     LEFT JOIN products on subProducts.id = products.idSubProduct 
         AND products.id = $idProduct
WHERE products.id IS NULL

还有其他方法可以做到这一点——not innot exists 可以类似地工作。这里使用not exists

SELECT *
FROM subProducts s
WHERE NOT EXISTS (
    SELECT 1
    FROM products p
    WHERE p.idSubProduct = s.id AND p.id = $idProduct
    )

【讨论】:

  • 如何将第一个查询传递给 laravel?我不知道在 laravel 中使用 AND 并且不适用于 where。谢谢
猜你喜欢
  • 2015-09-03
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多