SQL:reverse groupby:编辑

时间:2017-05-16 12:56:10

标签: sql group-by eloquent

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时,不会得到我想要的结果。

2 个答案:

答案 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();