mysql 使用多个列值获取最新记录

hgqdbh6s  于 2023-02-15  发布在  Mysql
关注(0)|答案(2)|浏览(122)

我有一个存储用户购买历史记录的表:
Purchases:第一个月第一个月,第一个月第二个月,第一个月第三个月,第一个月第四个月,第一个月第五个月,第一个月第六个月
我想得到一个用户最近购买的商品的清单,按品牌和型号分组。
下面是一个示例数据集:

1, Bob,  Apple,   iPhone 6, Gold,   2017-01-03
2, Bob,  Apple,   iPhone 6, Silver, 2017-01-09
3, Bob,  Apple,   iPhone 6, Gold,   2017-01-18
4, Bob,  Samsung, Galaxy,   Black,  2017-01-22
5, Bob,  Samsung, Galaxy,   Black,  2017-01-28
6, Jane, Apple,   iPhone 6, Silver, 2017-01-18
7, Jane, Apple,   iPhone 6, Silver, 2017-01-22
8, Jane, Samsung, Galaxy,   White,  2017-01-28

我想检索显示这样一个列表:

2, Bob,  Apple,   iPhone 6, Silver, 2017-01-09
3, Bob,  Apple,   iPhone 6, Gold,   2017-01-18
7, Jane, Apple,   iPhone 6, Silver, 2017-01-22
8, Jane, Samsung, Galaxy,   White,  2017-01-28

这样我就可以看到手机每个变体的最新购买日期。
我尝试了GROUP BY brand, model, color,但它不返回最新的行,因为不支持在组之前排序(?)。
如果我能澄清什么,请告诉我。先谢了。

lvmkulzt

lvmkulzt1#

您可以使用laravel查询构建器

$purchases = DB::table('Purchases')
            ->groupBy('brand', 'model', 'color')
            ->orderBy('date', 'desc')
            ->get();
8gsdolmq

8gsdolmq2#

试试这个

$date = array();
foreach ($purchase as $key => $row)
{
    $date[$key] = $row['date'];
}
array_multisort($date, SORT_ASC, $purchase);

相关问题