Php 如何编写有说服力的查询来检索具有max版本的多行?
我想编写一个查询来检索特定组的最大版本的行 例如: 英语基础有4个版本测试id:1,2,4,7。但是我想找回一个最大版本的 有了这个,我还想检索max版本的其他类似记录 我想要这个结果 Mom基本20 1版本ID:5 Mom中级30 1版本ID:6 英语基础20 5版本ID:7 谢谢,如果您有任何疑问,请告诉我 以下是我尝试过的: 我得到了SQL查询:Php 如何编写有说服力的查询来检索具有max版本的多行?,php,laravel,eloquent,Php,Laravel,Eloquent,我想编写一个查询来检索特定组的最大版本的行 例如: 英语基础有4个版本测试id:1,2,4,7。但是我想找回一个最大版本的 有了这个,我还想检索max版本的其他类似记录 我想要这个结果 Mom基本20 1版本ID:5 Mom中级30 1版本ID:6 英语基础20 5版本ID:7 谢谢,如果您有任何疑问,请告诉我 以下是我尝试过的: 我得到了SQL查询: SELECT *, MAX(`version`) FROM `test` GROUP BY `test_name`,`sub_category`
SELECT *, MAX(`version`) FROM `test` GROUP BY `test_name`,`sub_category`,`test_type`
但我不能正确地用laravel编写它,因为语法错误
以下是我的laravel尝试:
$test = Test::selectRaw('*, MAX(version) GROUP BY `test_name` ')->get();
$test = Test::selectRaw('*')->groupBy('sub_category')->toSql();
等等
另外,不要担心逗号或引号的格式,因为我尝试了所有的组合。只是不知道写代码是什么请试试这个
Mysql
拉维尔
我没有试过这个。但我认为你能做到。你所说的独特是什么意思还不清楚
Test::where('version', Test::max('version'))->get();
以下是我找到的解决方案: $test=DB::selectDB::raw 从测试a中选择* 内部联接选择测试类型、测试名称、子类别、MAXversion作为MAXversion 按测试类型、测试名称、子类别b列出的测试组 a.测试类型=b.测试类型 a.test_name=b.test_name a.sub_category=b.sub_category a.version=b.maxversion
如果你能做到这一点,那么请把它贴在这里,没有办法轻松地把它翻译成雄辩的。此外,您还需要将config->database文件中的sql strict设置为false才能运行此操作,因为它与group by有一些问题告诉我们您尝试了什么,以及您面临的问题。措辞非常混乱,如何定义max version(最大版本)?max version(最大版本)是该列中一组特定行的最大值,例如1-English-Basic等组有许多记录,但我想要具有最新/max版本的记录。我已经知道,但这只给出一条记录。我想用max-version$maxValue=DB::table'test'->max'version'检索多个记录$rows=DB::table'test'->其中'version',$maxValue->get;
$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"));
Test::where('version', Test::max('version'))->get();
$maxVersion = Test::orderBy('version', 'desc')->first(); // gets the whole row