我有一张桌子,可以保留来自客户的每笔交易,
是否可能仅检索客户在2018-10-01至2018-12-31之间进行的第一笔交易
示例:
+----+------+---------------------+
| id | name | transactions |
+----+------+---------------------+
| 1 | abc | 2018-10-04 17:34:24 |
| 2 | xyz | 2018-11-09 17:34:24 |
| 3 | xyz | 2018-12-05 17:34:24 |
| 4 | abc | 2018-12-11 17:34:24 |
+----+------+---------------------+
我只想得到:
abc - 2018-10-04 17:34:24
xyz - 2018-11-09 17:34:24
那有可能吗?
答案 0 :(得分:1)
遵循SQL select only rows with max value on a column中的模式,但使用MIN()
代替MAX()
。并添加一个BETWEEN
条件来限制时间段。
SELECT t1.*
FROM yourTable AS t1
JOIN (SELECT name, MIN(transactions) AS minTransactions
FROM yourTable
WHERE transactions BETWEEN '2018-10-01' and '2018-12-31 23:59:59'
GROUP BY name) AS t2 ON t1.name = t2.name AND t1.transactions = t2.minTransactions