MySQL排除与联接表匹配的记录(行)

MySQL排除与联接表匹配的记录(行),mysql,join,left-join,Mysql,Join,Left Join,我想从查询结果中排除Table1 ID等于Table2的Table1_ID的记录,这听起来很简单,但在我的原始查询中,我有多个左连接的表,我不知道如何将新表考虑在内 假设表1(又名产品)和表2看起来像这样(我不会发布其他表,因为我认为它们在这种情况下是不相关的): 如果我们看上面的表,我需要排除table1.id=2和table1.id=3,因为它们在表2中 我的原始查询如下所示: SELECT p.`id`, 0 AS `id_a`, p.`ref` AS `Reference`, gy

我想从查询结果中排除Table1 ID等于Table2的Table1_ID的记录,这听起来很简单,但在我的原始查询中,我有多个左连接的表,我不知道如何将新表考虑在内

假设表1(又名产品)和表2看起来像这样(我不会发布其他表,因为我认为它们在这种情况下是不相关的):

如果我们看上面的表,我需要排除table1.id=2和table1.id=3,因为它们在表2中

我的原始查询如下所示:

SELECT 
p.`id`,
0 AS `id_a`,
p.`ref` AS `Reference`,  
gy.`name` AS `MF`, 
pl.`name` AS `Full Name`,
pq.`quantity` AS `QTY`,  
IF(p.`tax`=1, ROUND(p.`price`*1.27), ROUND(p.`price`*1.18)) AS `Price`,
IF(p.`sale`=1, ROUND(sp.`discount`), "0") AS `discount amount`, 
CONCAT("http://example.com/",pl.`sef`,".html") AS `URL`, 
IF(pi.`id` IS NOT NULL, CONCAT( 'http://example.com/image/', pi.`id_image`, '-default.jpg' ), 'http://example.com/image/noimage.jpg') AS `image`
FROM `product` p
LEFT JOIN `stock` pq ON (p.`id` = pq.`id`)
LEFT JOIN `product_lng` pl ON (p.`id` = pl.`id`)
LEFT JOIN `manufacturer` gy ON (p.`m_id` = gy.`m_id`)
LEFT JOIN `image` pi ON (p.`id` = pi.`id`)
LEFT JOIN `discount_price` sp ON (p.`id` = sp.`id`)
WHERE p.`active`=1 AND pl.`lang_id`=1 AND pq.`quantity` > 0 AND p.`price` > 0
GROUP BY p.`id`
ORDER BY gy.`name`, pl.`name`

如何将表2中的因素纳入上述查询?

where
子句中,您可以添加:

and p.id not in (select table1_id from table2)

谢谢看起来它起作用了。我决不会想到在
where
and p.id not in (select table1_id from table2)