sql中是否有内置函数,以反转groupby的工作顺序?我尝试使用某个键进行分组,但我希望返回最后插入的记录,而不是第一个插入的记录。
使用orderby更改顺序不会影响此行为。
提前Thanx!
编辑:
这是样本数据:
id|value
-----
1 | A
2 | B
3 | B
4 | C
作为我想要的回报
1 | A
3 | B
4 | C
不
1 | A
2 | B
4 | C
当使用group by id时,不会得到我想要的结果。
答案 0 :(得分:1)
问题是你如何识别last inserted row
。根据您的示例,它看起来基于id
。如果id
是自动生成的,或者是序列,那么你肯定可以这样做。
select max(id),value
from your_table
group by value
理想情况下,在表格设计中,人们使用日期列来保存插入特定记录的时间,因此很容易按此顺序排序。
答案 1 :(得分:0)
使用Max()作为id
的汇总函数:
SELECT max(id), value FROM <table> GROUP BY value;
这将返回:
1 | A
3 | B
4 | C
关于eloquent
,我没有使用它,但我认为它看起来像:
$myData = DB::table('yourtable')
->select('value', DB::raw('max(id) as maxid'))
->groupBy('value')
->get();