Sql比较行

DaV*_*iDa 1 mysql sql select join

我想从产品表中选择名称不等于ordered_products中存在的名称的所有内容.我试过这个,但它没有用:

SELECT * FROM product WHERE naam IS NOT (SELECT naam FROM ordered_products)
Run Code Online (Sandbox Code Playgroud)

Mah*_*mal 5

您可以NOT IN像这样使用谓词:

SELECT * 
FROM product 
WHERE naam NOT IN (SELECT naam 
                   FROM ordered_products
                   WHERE naam IS NOT NULL);
Run Code Online (Sandbox Code Playgroud)

但这不安全,万一有来自另一个表的任何NULLnaam,这就是为什么我添加WHERE naam IS NOT NULL到子查询.更好的,使用JOIN如下:

SELECT p.* 
FROM product
LEFT JOIN ordered_products o ON p.naam = o.naam
WHERE p.naam IS NULL;
Run Code Online (Sandbox Code Playgroud)