我想知道如何删除数据库表中的重复条目,并将新副本保留在表中。这是我的表格的样子:
$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();
试试这个
$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