MySQL查询 - 从2个表中选择,如果存在于另一个检查字段中

时间:2013-11-12 13:47:04

标签: mysql

我试图从名为products的表中提取产品,我还有一个名为product_ranges的表。

products
--------
id
name
model

product_ranges
--------------
id
product_id
other_id

SELECT p.id 
FROM products As p 
LEFT JOIN product_ranges As pr ON (pr.product_id = p.id AND pr.other_id = 16)

这将选择所有产品并包含product_ranges表列,如果产品中存在该产品但是如果它存在于此表中并且other_id不等于16我不希望产品在返回的结果中但是如果产品在另一个表中根本不存在,我仍然希望它在结果中。

我确信我已经在几年前完成了但是却无法想到它的SQL - 如果有人知道正确的查询我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

更新:

SELECT p.id 
FROM products 
LEFT JOIN product_ranges pr ON pr.product_id = p.id
WHERE (pr.product_id IS NULL OR pr.other_id = 16)