我有2个表:客户,订单 如何在2017年找到所有购买ìtem='A'或item ='B'的客户,但在2016年没有购买任何商品='A'或商品='B'。
SQL怎么样?
任何帮助将不胜感激
答案 0 :(得分:0)
这将是:
SELECT c.id
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id
WHERE o.item IN ('A', 'B')
AND YEAR(o.date) = 2017
AND NOT EXISTS
(SELECT 1
FROM order o2
WHERE o2.item IN ('A', 'B')
AND YEAR(o2.date) = 2016
AND o2.customer_id = o.customer_id)
这取决于您的表结构。但基本上您希望在主查询中找到2017年购买了商品A或B的客户。然后NOT EXISTS条款检查同一客户在前一年没有购买A或B.