Laravel 5.1用eloquent删除DB中的重复项

问题描述 投票:0回答:1

我想知道如何删除数据库表中的重复条目,并将新副本保留在表中。这是我的表格的样子:

 $table->increments('id');
 $table->string('text');
 $table->string('type');
 $table->integer('external_id');
 $table->timestamps();

由于我从其他数据库导入,并且我想每天导入一次所有数据,这意味着数据库中已经存在一些现有条目,以及新条目。由于我只需要保留新的条目,我需要删除所有旧条目(重复项和非新条目的唯一条目)。有没有办法在Laravel 5.1中使用Eloquent?我试过这个,但它删除了表中的所有内容:

$deleteDuplicates = DB::table('questions')->select('external_id')->distinct()->delete();
sql eloquent laravel-5.1
1个回答
1
投票

试试这个

$deleteDuplicates = DB::table('questions as n1')
                    ->join('questions as n2', 'n1.id', '>', 'n2.id')
                    ->where('n1.name', '=', 'n2.name')
                    ->delete();

查询可能如下所示:

DELETE n1 FROM questions n1, questions n2 WHERE n1.id > n2.id AND n1.name = n2.name

检查Delete all Duplicate Rows except for One in MySQL?

© www.soinside.com 2019 - 2024. All rights reserved.