我想编写一个查询来检索特定组具有最高版本的行
例如: 英文基础版有4个版本(test_id:1、2、4、7)。但我想检索最大版本 与此同时,我还想检索其他此类最高版本的记录
我想要这个结果
谢谢,如果您有任何疑问,请告诉我
这是我尝试过的:
我得到了SQL查询:
SELECT *, MAX(`version`) FROM `test` GROUP BY `test_name`,`sub_category`,`test_type`
但是我无法在laravel中正确编写它(引发语法错误)
这是我的幼虫尝试:
$test = Test::selectRaw('*, MAX(version) GROUP BY `test_name` ')->get();
$test = Test::selectRaw('*')->groupBy('sub_category')->toSql();
以此类推
P.S。当我尝试使用所有组合时,请不要担心逗号或引号的格式。只是无法弄清楚什么是写代码
答案 0 :(得分:2)
我没有尝试过这个。但我认为您可以做到。您所指的独特含义还不清楚。
Test::where('version', Test::max('version'))->get();
答案 1 :(得分:0)
请尝试一下
Mysql
select test_type,test_name,sub_category,time,max(version) as version
from table_name group by test_name,sub_categoryorder by version ;
Laravel
$result=DB::select(DB::raw("select test_type,test_name,sub_category,time,max(version) as version
from table_name group by test_name,sub_categoryorder by version"));
答案 2 :(得分:0)
$maxVersion = Test::orderBy('version', 'desc')->first(); // gets the whole row
答案 3 :(得分:0)
这是我找到的解决方案:
$ test = DB :: select(DB :: raw(“ 选择*从测试 INNER JOIN(SELECT test_type,test_name,sub_category,MAX(version)AS maxversion 从测试GROUP BY test_type,test_name,sub_category)b 开启a.test_type = b.test_type AND a.test_name = b.test_name AND a.sub_category = b.sub_category AND a.version = b.maxversion“));
如果可以的话,没有办法轻松地将其翻译成雄辩的语言,请在此处发布。另外,您还需要在config-> database文件中将sql严格设置为false才能运行此命令,因为它与group by存在一些问题