簡體   English   中英

刪除不同的數據mysql和laravel

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM