我对一个方程式有点困难,我似乎无法弄清楚或找到这里。我正在努力做到以下几点;
我有2张桌子,产品和teamproducts。有外键是生产的。我正在尝试从product表中选择尚未注册到teamproducts表的产品。我也在使用teamproducts中的团队代码。以下示例;
1001 |产品1
1002 |产品2
1003 |产品3
1004 |产品4
1005 |产品5
等
teamcode1 | 1001
teamcode1 | 1002
我想要做的是选择所有不在teamproducts页面中的产品(所以在这个例子中产品3及其上)
我尝试了以下内容;
SELECT productname FROM products p, teamproducts tp WHERE teamcode = teamcode1 AND p.productid != tp.productid
和我见过的其他变化,但没有提出正确的路线。请帮忙。
答案 0 :(得分:1)
未经测试,但我认为这应该可以胜任。
SELECT products.productname
FROM products
LEFT JOIN teamproducts
ON teamproducts.teamcode = 'teamcode1'
AND teamproducts.productid = products.productid
WHERE teamproducts.productid IS NULL;
答案 1 :(得分:0)
你要找的是LEFT JOIN
,有一个额外的条件可以消除右表中的空结果:
SELECT * FROM products
LEFT JOIN teamproducts USING (productid)
WHERE teamproducts.productid IS NULL; -- Add other conditions as needed
编辑添加' teamcode'条件:
SELECT * FROM products
LEFT JOIN teamproducts USING (productid)
WHERE teamproducts.productid IS NULL
AND teamproducts.teamcode = 'teamcode1'; -- Add other conditions as needed
有关JOIN及其不同类型的更多信息:http://dev.mysql.com/doc/refman/5.7/en/join.html
答案 2 :(得分:0)
我认为你必须在引号之间写teamcode1
。
像这样:
SELECT productname FROM products p, teamproducts tp WHERE teamcode = 'teamcode1' AND p.productid != tp.productid
答案 3 :(得分:0)
您可以使用not in子句
select * from products
where id not in (select productid from teamproduct);