第1步:从表中获取最大的set_id。 set_id不是唯一的。
select max(set_id) from mytable where ver = 6;
# assume returns 3
步骤2:从set_id为max的表中获取结果:
select * from mytable where ver = 6 and set_id = 3;
# from step 1
步骤3:重构/嵌套select语句
select * from mytable where ver = 6 and set_id =
( select max(set_id) from mytable where ver = 6 );
是否有更清晰的方式撰写此声明?
如何将此语句翻译为Eloquent / Fluent查询构建器?
答案 0 :(得分:1)
我会写这样的声明:
SELECT * from mytable WHERE ver=6 ORDER BY set_id DESC LIMIT 1;
将转换为:
DB::table('mytable')->where('ver', 6)->orderBy('set_id', 'DESC')->first();
答案 1 :(得分:0)
您可以创建更高级的where
子句:
DB::table('mytable')
->where('ver', '=', 6)
->where('set_id', '=', function($query)
{
$query->from('mytable')
->select(DB::raw('max(set_id)'))
->where('ver', '=', 6);
})
->get();