我有2个表:客户,订单如何在2017年找到所有购买的商品ìtem='A'或item ='B'但是在2016年没有购买任何商品='A'或商品='B' 。
SQL怎么样?
任何帮助,将不胜感激
它会是这样的:
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.