删除不同的数据mysql和laravel

vatpfxk5  于 2021-06-17  发布在  Mysql
关注(0)|答案(4)|浏览(338)

嗨,我有拉威尔项目,我有这个模型

User_attendance

User

我内心有这种关系 User ```
public function getAttendance()
{
return $this->hasMany('App\User_attendance','user_attendance_user_id','id');
}

现在有重复的数据在用户界面上,就像这样

9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-28 17:35:00
9238<><> 2018-11-29 17:44:34
9238<><> 2018-12-08 17:18:12
9238<><> 2018-12-08 17:18:12

现在 `9238<><> 2018-11-27 17:45:48` 有12个记录我怎么能在laravel或mysql内部运行查询删除11个记录,只留下1个我做了这个

$users = User::limit(30)->get();
foreach($users as $u)
{
foreach($u->getAttendance as $attendance)
{
echo $attendance->user_attendance_user_id . "<><> ".$attendance->created_at ."";
}
}

我想删除重复数据,只留下一个记录。谢谢
c90pui9n

c90pui9n1#

试试这个

User::with('getAttendance')->distinct()->get();
2ledvvac

2ledvvac2#

如果您想删除数据库中的记录,可以执行如下mysql查询

DELETE t1 FROM `User_attendance` as f
        INNER JOIN
    `User_attendance` as s 
WHERE
    f.id < s.id AND f.time = s.time AND f.user_attendance_user_id = s.user_attendance_user_id;

这将从表中删除重复项。如果新行是唯一的,您可能希望确保只插入新行,因此请在代码中进行检查(并在数据库中使user id和time的列组合唯一(即唯一索引))

xt0899hw

xt0899hw3#

使用双重分组,例如:

DB::table('users')
            ->select('*')
            ->groupBy('user_attendance_user_id','created_at')
            ->get();
wlsrxk51

wlsrxk514#

使用distinct或group by关键字
例子:
选择distinct(列)、column1、column2,。。。从表名称;
按用户考勤用户id从用户考勤组中选择*创建于;

相关问题