首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel雄辩地获得了最新的分组行

Laravel雄辩地获得了最新的分组行
EN

Stack Overflow用户
提问于 2018-02-24 02:28:52
回答 5查看 6.1K关注 0票数 3

使用雄辩,试图找到一种方法,以获得每一行的最新行分组: exchange,base,引号

数据

代码语言:javascript
运行
复制
exchange    base    quote   price   value   created_at

bittrex     BTC     USD     10000   10000   2018-01-05
bittrex     BTC     USD     9000    9000    2018-01-01
poloniex    BTC     USD     10001   10001   2018-01-05
poloniex    BTC     USD     9000    9000    2018-01-01
binance     BTC     USD     10002   10002   2018-01-05
binance     BTC     USD     9000    9000    2018-01-01
binance     ETH     USD     800     800     2018-01-05
binance     ETH     USD     700     700     2018-01-01

结果:

代码语言:javascript
运行
复制
bittrex     BTC     USD     10000   10000   2018-01-05
poloniex    BTC     USD     10001   10001   2018-01-05
binance     BTC     USD     10002   10002   2018-01-05
binance     ETH     USD     800     800     2018-01-05

更新

我使用了@Cryode解决方案,它是原始SQL,而不是雄辩的SQL(如果有人可以提出一个雄辩的查询来复制下面查询的结果,请随意发布)。

我还更改了表的结构,以添加id (增量)作为主键。我还添加了以下索引$table->index(['exchange', 'base', 'quote', 'created_at']);

以下是解决办法:

代码语言:javascript
运行
复制
$currencies  = DB::select('SELECT *
                             FROM (
                                    SELECT DISTINCT exchange, base, quote
                                      FROM tickers
                                  ) AS t1
                             JOIN tickers
                               ON tickers.id =
                                 (
                                    SELECT id
                                      FROM tickers AS t2
                                     WHERE t2.exchange  = t1.exchange
                                       AND t2.base      = t1.base
                                       AND t2.quote     = t1.quote
                                     ORDER BY created_at DESC
                                     LIMIT 1
                                 )
                         ');

谢谢

EN

Stack Overflow用户

发布于 2018-02-24 08:09:06

可以将多个参数传递给groupBy方法,以按多列分组。

请参阅https://laravel.com/docs/5.6/queries#ordering-grouping-limit-and-offset文档

代码语言:javascript
运行
复制
$users = DB::table('users')
            ->groupBy('first_name', 'status')
            ->having('account_id', '>', 100)
            ->get();
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48958737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档