Ich habe die folgende Tabelle bekam verwendet, um Benutzer zu verfolgen, die ein Support-Ticket beobachtenMySQL Downgrading Composite-Primärschlüssel restriktiver sein
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;
Ich möchte eine Herabstufung Skript haben, die contactid aus dem Primärschlüssel entfernt .
Der Tabelleninhalt sieht ein bisschen wie dieses
ticketid|employeeid|contactid
--------|----------|---------
5 |5 |0
5 |8 |0
5 |0 |2
5 |0 |3
Als ich (erfolglos) herabzustufen Skript ausführen,
ALTER TABLE crm_ticketwatcher DROP PRIMARY KEY, ADD PRIMARY KEY (ticketid, employeeid);
ich die folgende Fehlermeldung erhalten:
ERROR 1062 (23000) at line 1: Duplicate entry '306-0' for key 'PRIMARY'
, weil es jetzt zwei Zeilen mit dem Primärschlüssel-Set (5, 0)
Was ist der beste Weg, um die zusätzlichen Zeilen aus der Tabelle zu löschen, Speichern des letzten vorkommenden?
Wir sind auf MySQL 5.7.13, so das Schlüsselwort IGNORE ist keine Option.
Danke.
können Sie mir sagen, auch die Struktur der Tabelle, die Sie Informationen erhalten „auftreten dauern“? wie Datum. Oder möchten Sie nur die höchste oder niedrigste Kontaktreihe behalten? Welchen halten Sie (5, 0, 2) oder (5, 0, 3)? – Tin
(5, 0, 3) gehalten werden würde, weil es die unterste Reihe –
ist soll ich denke eggyal Antwort für diesen Fall arbeiten. – Tin