用SQL实现怎么找A表有B表没有的数据
可以通过使用 LEFT JOIN
或 NOT EXISTS
来实现。下面是使用 NOT EXISTS
的写法:
-- 查询购买商品A但没有购买商品B的用户
SELECT user_id
FROM purchase p1
WHERE p1.product_id = 'A'
AND NOT EXISTS (
SELECT 1
FROM purchase p2
WHERE p2.user_id = p1.user_id
AND p2.product_id = 'B'
);
另外,也可以使用 LEFT JOIN
来实现:
-- 使用 LEFT JOIN 查询购买商品A但没有购买商品B的用户
SELECT p1.user_id
FROM purchase p1
LEFT JOIN purchase p2 ON p1.user_id = p2.user_id AND p2.product_id = 'B'
WHERE p1.product_id = 'A'
AND p2.user_id IS NULL; -- 没有购买商品B的用户