从表1中获取表2中没有的记录

bq9c1y66  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(635)

这个问题在这里已经有答案了

仅当值不存在时返回行(2个答案)
两年前关门了。
此查询有什么问题:

SELECT `product`.`id`, `title` AS `text` FROM `product` 
LEFT JOIN `productlang` ON product.id=productlang.product_id 
LEFT JOIN `new_product` ON product.id=new_product.product_id 
WHERE (`product`.`id` <> `new_product`.`product_id`) 
AND (`title` LIKE '%nik%') 
AND (`language`='bg') 
LIMIT 20

我们的目的是从 product 谁的表 id 不存在于 new_product ( product_id 是相关的专栏)我想 WHERE (product.id <> new_product.product_id) 部分应该起作用。我的错在哪里?谢谢您!

h7appiyu

h7appiyu1#

无论何时使用 Left Join ,请确保 Where 表右侧的条件 Left JoinOn 条款。否则,这将限制您的结果集。
要检查右侧表中是否没有匹配的条目,可以使用 IS NULL .
在处理多表查询时,请使用适当的别名,以便于阅读和清晰。
请尝试以下操作:

SELECT p.id, 
       pl.title AS `text` 
FROM product AS p 
LEFT JOIN productlang AS pl  
  ON p.id = pl.product_id AND 
     pl.title LIKE '%nik%' AND 
     pl.language = 'bg' 
LEFT JOIN new_product AS np 
  ON p .id = np.product_id 
WHERE np.product_id IS NULL 
LIMIT 20

相关问题