I Tabelle wie diese in der Tabelle i,alle doppelten Zeilen in mySQL löschen 5.7.9
select id,channel,post from posts limit 10
+------+------------+-------+
| id | channel | post |
+------+------------+-------+
| 1433 | channel2 | 19353 |
| 1434 | channel2 | 19353 |
| 1435 | channel2 | 19354 |
| 1436 | channel2 | 19354 |
| 1437 | channel2 | 19356 |
| 1438 | channel2 | 19357 |
| 1439 | channel2 | 19358 |
| 1440 | channel2 | 19359 |
| 1441 | channel2 | 19360 |
| 1634 | channel2 | 19360 |
+------+------------+-------+
in dieser Tabelle id
ein primary key
ist, jetzt für einen Kanal ein Duplikat Post haben habe ich versuchen, ein hinzufügen unique key
Tabelle und entfernen Sie alle doppelte Zeile mit dieser Abfrage
ALTER ignore TABLE `posts` ADD UNIQUE key `unique_index` (`channel`, `post`);
aber in mysql 5.7.9
wir das nicht tun können!
so möchte ich wissen, wie ich doppelte Zeile löschen und einen eindeutigen Schlüssel für channel
, post
Lösung
DELETE FROM posts
WHERE ID Not in (SELECT*
FROM (SELECT MIN(ID)
FROM posts
GROUP BY channel, Post) B
)
Ich nehme an, Sie möchten die Datensätze mit der minimalen ID zu halten? –
@RaymondNijland: Wirklich das ist im Moment nicht wichtig, also nicht anders! – MrUnknow