我有一个用户表,其中有列Membership Id
。我需要获取Membership Id
列没有重复值的行。例如,这是我的表结构
ID Name Membership Id
1 xxx 123
2 xxx 124
3 xxx 124
4 xxx 125
在输出中,我想跳过具有会员ID重复值的行,并且只想获取最后一行,因此输出应为上例中的1,3,4行
答案 0 :(得分:1)
使用子查询JOIN:
$join = User::select('membership_id', DB::raw('max(id) id'))
->groupBy('membership_id');
$sql = '(' . $join->toSql() . ') as latest';
$users = User::join(DB::raw($sql), function($join) {
$join->on('users.membership_id', 'latest.membership_id')
->on('users.id', 'latest.id');
})->get();
在Laravel 5.6.17中,您可以使用joinSub()
:
$join = User::select('membership_id', DB::raw('max(id) id'))
->groupBy('membership_id');
$users = User::joinSub($join, 'latest', function($join) {
$join->on('users.membership_id', 'latest.membership_id')
->on('users.id', 'latest.id');
})->get();
答案 1 :(得分:0)
足够
MyModel::distinct()->get(['column_name']);
为您
User::distinct()->get(['Membership Id']);
并且您必须更改t
答案 2 :(得分:0)
很有口才
User::select('Membership_Id')->distinct()->get();
Vie数据库外观
DB::table('users')->select('Membership_Id')->distinct()->get();