[英]delete distinct data mysql and laravel
嗨,我有laravel項目,我有這個模型
User_attendance
User
我在User
內部有這種關系
public function getAttendance()
{
return $this->hasMany('App\User_attendance','user_attendance_user_id','id');
}
現在在User_attendance中有重復數據,像這樣
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 ."<br />";
}
}
我想刪除重復數據,只留下一個重復的感謝
使用類似的雙重分組:
DB::table('users')
->select('*')
->groupBy('user_attendance_user_id','created_at')
->get();
如果要刪除數據庫中的記錄,則可以執行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;
這將從表中刪除重復的條目。 您可能要確保僅插入新行(如果它是唯一的),因此請檢查代碼(並使用戶ID和時間的列組合在數據庫中唯一)(即UNIQUE索引)
使用DISTINCT或GROUP BY關鍵字
例:
SELECT DISTINCT(column),column1,column2,... FROM table_name;
SELECT *來自User_attendance GROUP BY user_attendance_user_id,created_at;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.