2016-04-01 5 views
0

Мне интересно, как удалить повторяющиеся записи в таблице DB и сохранить новые копии в таблице. Это как моя таблица выглядит следующим образом:Laravel 5.1 удаление дубликатов в DB с eloquent

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

Поскольку я импортировать из других БД, и я хотел бы импортировать все данные один раз в день, значит, будут какие-то существующие записи уже в БД, и новые записи, как Что ж. Поскольку мне нужно сохранить только новые записи, мне нужно удалить все старые записи (дубликаты и уникальные записи, которые не являются новыми). Есть ли способ сделать это с Eloquent в Laravel 5.1? Я попытался это, но он уничтожает все в таблице:

$deleteDuplicates = DB::table('questions')->select('external_id')->distinct()->delete(); 

ответ

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?

+0

Это дает мне последователей Ошибка ng: QueryException в строке Connection.php 651: SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'as 'n1' из' questions' как 'n1' inner join' questions' как 'n2' на' n1'.'id'> '' в строке 1 (SQL: удалить 'questions' как' n1' из 'questions' как' n1' inner join 'questions' как' n2' на 'n1'.'id'>' n2'.'id' где 'n1 '.'external_id' = n2.external_id) – Marco

+0

Проверьте приведенную выше ссылку. Если красноречивый не работал, используйте построитель запросов, где вы можете даже поставить raw sql. Но сначала проверьте SQL в своем тестовом db, если это работает или нет. – iamkdev

Смежные вопросы