查询以选择仅在特定年份购买的客户

时间:2019-09-27 13:36:17

标签: mysql select

嗨,我有一张看起来像这样的桌子

table

我需要选择仅在2015年购买的客户,这意味着我不需要2015年和2016年购买的客户。但可悲的是我无法弄清楚 任何帮助都会被禁止

是否可以像

一样写
     select customerid
      from x 
      where year(date)="2015" and year(date)!=2016

谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以通过以下方法做到这一点:首先找到2016年有购买的客户,然后将2015年有购买的所有客户带走,除了那些也在2016年组中列出的客户:

SELECT DISTINCT t1.customerid
FROM x AS t1
LEFT JOIN (
    SELECT DISTINCT customerid -- select the 2016 consumerid group
    FROM x
    WHERE date BETWEEN '2016-01-01' AND '2016-12-31'
) AS t2
ON t1.customerid = t2.customerid
WHERE date BETWEEN '2015-01-01' AND '2015-12-31'
AND t2.customerid IS NULL -- only take rows without consumerid match in 2016

我还添加了DISTINCT以避免重复(如果某个客户在2015年购买了几次)

如@Strawberry所述,year(date)无法使用索引,因此我将其更改为BETWEEN