我需要为Laravel中的每个唯一日期选择一行。我有工作SQL查询,但我无法在Laravel中工作。
工作查询是:
SELECT *
FROM `stats`
WHERE id IN (SELECT MAX(id) FROM `stats` GROUP BY DATE(created_at))
答案 0 :(得分:1)
这是您在laravel中的查询
DB::table('stats')
whereIn('id', function($query){
$query->select(DB::RAW('max(id)'))
->from('stats')
->groupBy(DB::RAW('DATE(created_at)'))
})->get();
答案 1 :(得分:0)
试试这个:
$sql = "SELECT * FROM stats WHERE id IN (SELECT MAX(id) FROM stats GROUP BY
DATE(created_at))";
$result = DB::select($sql);
答案 2 :(得分:0)
我不太了解Laravel,但这里有一个查询,可以告诉你你需要什么:
SELECT t1.*
FROM stats t1
INNER JOIN
(
SELECT created_at, MAX(id) AS max_id
FROM stats
GROUP BY created_at
) t2
ON t1.created_at = t2.created_at AND
t1.id = t2.max_id
答案 3 :(得分:0)
你可以用2种不同的方式进行laravel查询 1.雄辩:只需为统计表创建模型并在查询下面写下
Stats::whereIn('id', function($q){
$q->select(DB::RAW('max(id)'))
->from('stats')
->groupBy(DB::RAW('DATE(created_at)'))
})->get();
按表名称呼叫
DB::table('stats')->whereIn('id', function($q){
$q->select(DB::RAW('max(id)'))
->from('stats')
->groupBy(DB::RAW('DATE(created_at)'))
})->get();
答案 4 :(得分:0)
您可以在laravel中轻松地执行whereRaw,以使语法与标准
保持一致 $ results = State :: whereRaw('id IN(SELECT MAX(id)FROM stats
GROUP BY DATE(created_at))') - > get();
注意:State是App \ State Model 这将完成这项工作