MySQL仅返回日期之间的第一笔交易

时间:2018-12-11 18:08:16

标签: mysql

我有一张桌子,可以保留来自客户的每笔交易,

是否可能仅检索客户在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

那有可能吗?

1 个答案:

答案 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