我有一个SQL表包含销售某些项目的数据。事实上,它有销售物品的日志。MySQL:按多列分组时选择第一行或最后一行
例如,有一个销售包含2项:键盘(id:1
)和鼠标(id:2
)。买家可以对每件商品进行出价并多次出价,例如eBay。所以我们假设有两个买家(ids are 97 and 98
)几次出价。相关的数据是:
bid_id | buyer_id | item_id | amount | time |
1 | 97 | 1 | 44.26 | 2014-01-20 15:53:16 |
2 | 98 | 2 | 30.47 | 2014-01-20 15:54:52 |
3 | 97 | 2 | 40.05 | 2014-01-20 15:57:47 |
4 | 97 | 1 | 42.46 | 2014-01-20 15:58:36 |
5 | 97 | 1 | 39.99 | 2014-01-20 16:01:13 |
6 | 97 | 2 | 24.68 | 2014-01-20 16:05:35 |
7 | 98 | 2 | 28 | 2014-01-20 16:08:42 |
8 | 98 | 2 | 26.75 | 2014-01-20 16:13:23 |
在这个表,我需要的第一个项目,提供每个用户和最后报价为每一位用户选择的数据。
所以,如果我选择第一项提供了每一个用户(不同的),返回的数据应该是这样的:
bid_id | buyer_id | item_id | amount | time |
1 | 97 | 1 | 44.26 | 2014-01-20 15:53:16 |
2 | 98 | 2 | 30.47 | 2014-01-20 15:54:52 |
3 | 97 | 2 | 40.05 | 2014-01-20 15:57:47 |
如果我选择为每个用户最后的报价,回报应该是这样的:
bid_id | buyer_id | item_id | amount | time |
5 | 97 | 1 | 39.99 | 2014-01-20 16:01:13 |
6 | 97 | 2 | 24.68 | 2014-01-20 16:05:35 |
8 | 98 | 2 | 26.75 | 2014-01-20 16:13:23 |
因为我必须把每个项目的每个用户,我试图GROUP BY
两个buyer_id
和item_id
,然后SELECT
的time
或bid_id
的MIN
值。但它总是返回我第一个bid_id
但最新amount
行(实际上是最后提供)。
这是我试过的查询:
SELECT MIN(`bid_id`) AS `bid_id`,`buyer_id`,`item_id`,`amount`,`time` FROM `offers` GROUP BY `buyer_id`,`item_id`
,结果是:
bid_id | buyer_id | item_id | amount | time |
1 | 97 | 1 | 39.99 | 2014-01-20 16:01:13 |
2 | 97 | 2 | 24.68 | 2014-01-20 16:05:35 |
3 | 98 | 2 | 26.75 | 2014-01-20 16:13:23 |
正如你所看到的,它按和ID是正确的,但该行其余值是不。
分组购买多列时,如何正确SELECT
第一行和/或最后一行?