я получил следующую таблицу, используемую для отслеживания пользователей, которые смотрят тикетMySQL Составной первичный Понижение ключ к более ограничительным
CREATE TABLE IF NOT EXISTS crm_ticketwatcher (
ticketid int(10) unsigned NOT NULL DEFAULT '0',
employeeid int(10) unsigned NOT NULL DEFAULT '0',
contactid int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (ticketid,employeeid,contactid)
) ENGINE=MyISAM;
Я хочу иметь сценарий, который удаляет понизить ContactID из первичного ключа ,
Содержание таблицы выглядит немного как этот
ticketid|employeeid|contactid
--------|----------|---------
5 |5 |0
5 |8 |0
5 |0 |2
5 |0 |3
Когда я бегу мой (неудачную) понизить сценарий,
ALTER TABLE crm_ticketwatcher DROP PRIMARY KEY, ADD PRIMARY KEY (ticketid, employeeid);
Я получаю следующее сообщение об ошибке:
ERROR 1062 (23000) at line 1: Duplicate entry '306-0' for key 'PRIMARY'
, потому что теперь есть 2 строки с набором первичных ключей (5, 0)
Каков наилучший способ удалить дополнительные строки из таблицы, сохранив последний из них?
Мы находимся на MySQL 5.7.13, поэтому ключевое слово IGNORE не является вариантом.
Спасибо.
Можете ли вы также рассказать мне о структуре таблицы, в которой вы получите информацию о «последних встречах»? как дата. Или вы просто хотите сохранить самый высокий или самый низкий контактный ряд? Кого вы держите (5, 0, 2) или (5, 0, 3)? – Tin
(5, 0, 3) будет сохранено, потому что это самый низкий ряд –
. Думаю, ответ eggyal должен работать на этот случай. – Tin