我有一个名为产品的表格和一个名为 product_description 的表格 它们都有一个名为 product_id 的列,用于链接它们。 如何从 product_des 表中获取 product_id 表中的所有行 没有在产品表中找到?
我试过了:
SELECT *
FROM `product_description`
JOIN product ON product_description.product_id = product.product_id
WHERE product_description.product_id != product.product_id
但是返回零行。
答案 0 :(得分:1)
使用左外连接并找到没有匹配的位置:
SELECT product_description.*
FROM `product_description` left outer join product
on product_description.product_id = product.product_id
where product.product_id is null
答案 1 :(得分:0)
INNER JOIN
过滤掉不匹配的内容。这就是为什么你的查询没有得到任何结果。您需要的是OUTER JOIN
SELECT *
FROM product_description d LEFT JOIN product p
ON d.product_id = p.product_id
WHERE p.product_id IS NULL
或者您可以使用带有NOT IN
SELECT *
FROM product_description
WHERE product_id NOT IN
(
SELECT product_id
FROM product
)
或NOT EXISTS
SELECT *
FROM product_description d
WHERE NOT EXISTS
(
SELECT *
FROM product
WHERE product_id = d.product_id
)
以上是所有上述查询的 SQLFiddle 演示
要更好地了解JOIN
,请参阅A Visual Explanation of SQL Joins