我有两张桌子。
一个表包含客户数据,如姓名和电子邮件地址。另一个表包含状态更改的日志。
状态日志表如下所示:
+-------------+------------+------------+
| customer_id | status | date |
+-------------+------------+------------+
| 1 | Bought | 2018-07-01 |
| 1 | Bought | 2018-07-02 |
| 2 | Ongoing | 2018-07-03 |
| 3 | Ongoing | 2018-07-04 |
| 1 | Not Bought | 2018-07-05 |
| 4 | Bought | 2018-07-06 |
| 4 | Not Bought | 2018-07-07 |
| 4 | Bought | 2018-07-08 | *
| 3 | Cancelled | 2018-07-09 |
+-------------+------------+------------+
以及客户数据:
+-------------+------------+
| id | name | email |
+-------------+------------+
| 1 | Alex | alex@home |
| 2 | John | john@home |
| 3 | Simon | si@home |
| 4 | Philip | phil@home |
+-------------+------------+
我想选择7月(07年)已经“购买”的客户。但不包括最近状态从“购买”其他任何东西改变的客户。
结果应该只有一个客户(philip)-所有其他客户的状态都发生了变化,而不是最近购买的。
我有以下SQL:
SELECT
a.customer_id
FROM
statuslog a
WHERE
DATE(a.`date`) LIKE '2018-07-%'
AND a.status = 'Bought'
ORDER BY a.date DESC
LIMIT 1
但那是我所能做到的!上面的查询只返回一个结果,但实际上可能有多个结果。
感谢您的帮助!