假设我有一个Product表和一个
id product
1 Apple
2 Bag
3 Cat
4 Ducati
和购物车表
id user_id product_id
1 1 2
2 1 3
3 2 1
4 3 1
所以,我想看看一个特定的用户,看看他/她在购物车中没有的东西。
换句话说,在上面的例子中
SELECT ...... WHERE user_id=1 .....
将返回Apple和Ducati,因为用户1已经拥有Bag和Cat。
(这可能与另一个问题重复,但有很多变化,我找不到完全匹配,并加入这些简单的术语可能有所帮助)
答案 0 :(得分:2)
执行从产品到user1购买的所有产品的左连接,可以通过连接中的子选择来检索。这将导致所有不在user1关注的产品ID具有null产品ID。 where子句将选择所有null产品ID,这意味着它们不会出现在用户购物车中,主要是过滤购买的商品。
select p.name
from product p
left join (select product_id, user_id
from cart where user_id = 1)
c
on p.id = c.product_id
where c.product_id is null;
答案 1 :(得分:0)
Select
*
From Product p
Where p.id Not In
(
Select c.product_id
From Cart c
Where User ID = ____
)
答案 2 :(得分:0)
SELECT product FROM product_table
WHERE product NOT IN
(SELECT product_id FROM cart_table WHERE user_id = 1);
答案 3 :(得分:0)
这将为所有不在购物车中的用户提供所有产品。
select c.user_id,a.Product
from cart c Cross Join product a
left Join
cart b on b.product_id=a.id and c.user_id=b.user_Id
where b.product_id is null
group by c.user_id,a.Product