选择与另一张桌子无关的产品

时间:2019-04-08 07:53:37

标签: sql postgresql

我有2个表product_productproduct_location_stock

product_productproduct_location_stock没有任何关系

product_location_stockproduct_id列,它与product_product

有关系

我的目标是获取所有没有product_location_stock

的产品的ID

有些产品分配给product_location_stock,有些则没有,所以基本上我需要获取那些没有的产品。

所以首先我想我需要获得所有的product_id,例如

SELECT id FROM product_product

及之后

SELECT product_id from product_loction_stock

也许然后比较ID并获得不匹配的ID?

然后我有点被困住了,所以甚至有可能实现我想要的?

2 个答案:

答案 0 :(得分:3)

NOT EXISTS是将您的需求直接转换为SQL:

SELECT product_product.id
FROM product_product
WHERE NOT EXISTS
   (SELECT 1
    FROM product_location_stock
    WHERE product_location_stock.product_id = product_product.id);

答案 1 :(得分:2)

下面的代码可能会对您有所帮助。

SELECT P.product_id  FROM  product_product P
left join product_location_stock PL ON PL.product_id =P.product_id 
WHERE PL.product_id  IS NULL