2015-09-08 5 views
4

Я пытаюсь запустить 3 запросов в моей базе данных:SQL UPDATE или DELETE, если дублировать

UPDATE `table` SET `rubriq` = '77' WHERE `rubriq` = '61'; 
UPDATE `table` SET `rubriq` = '77' WHERE `rubriq` = '62'; 
UPDATE `table` SET `rubriq` = '77' WHERE `rubriq` = '63'; 

В table у меня есть две колонки abonne и rubriq. Abonne - первичный ключ, а два - индекс.

Если в моей базе данных у меня есть, например:

abonne | rubriq 
    84  | 61 
    84  | 62 
    84  | 63 

Когда я запускаю 3 запросов, для первого не существует никаких проблем, но и для второго, у меня есть сообщение об ошибке: #1062 - Duplicate entry '84-77' for key 1

Как могу ли я сделать для запуска этих 3 запросов, но, когда есть такая ошибка, просто удалите строку?

Спасибо!

+0

может быть, ваш 'rubriq' столбец является первичным ключом. пожалуйста, проверьте. а также у вас всего 1 столбец в вашем rubriq? – Makudex

+0

Просьба представить структуру таблиц и их ключей. Также проверьте уникальные индексы. –

+0

Ваша таблица состоит из уникального ключа с столбцом 'abonne' и' rubriq', который показывает ошибку для 'Duplicate Entry' –

ответ

3

Вам придется вручную удалить записи, которые будут вызывать конфликт:

UPDATE `table` SET rubriq = 77 WHERE rubriq = 61; 

DELETE t62 
FROM `table` t77 
    JOIN `table` t62 USING (abonne) 
WHERE t77.rubriq = 77 
    AND t62.rubriq = 62; 

UPDATE `table` SET rubriq = 77 WHERE rubriq = 62; 

DELETE t63 
FROM `table` t77 
    JOIN `table` t63 USING (abonne) 
WHERE t77.rubriq = 77 
    AND t63.rubriq = 63; 

UPDATE `table` SET rubriq = 77 WHERE rubriq = 63; 
Смежные вопросы