web-dev-qa-db-de.com

Löschen Sie doppelte Zeilen aus der WordPress-Datenbank, in der eine Spalte in phpmyadmin doppelt vorhanden ist

Ich habe so eine WordPress-Tabelle (phpmyadmin und MySQL)

| id |  meta_key | meta_value |
+----+-----------+------------+
| 1  | import_id | abc        |
| 2  | import_id | abc        |
| 3  | import_id | def        |
| 4  | import_id | xyz        |
| 5  | import_id | xyz        |
| 6  | import_id | xyz        |
| 7  | something | 123        |
| 8  | something | 234        |
+----+-----------+------------+

Ich brauche die ID aller doppelten Zeilen, in denen meta_key = 'import_id'

um sie von einem anderen Tisch zu entfernen.

Ich möchte die MIN (id) jeder der zurückgegebenen Zeilen behalten, wobei 'meta_value' gleich ist

die Ausgabe sollte sein:

| id |  meta_key | meta_value |
+----+-----------+------------+
| 2  | import_id | abc        |
| 3  | import_id | def        |
| 6  | import_id | xyz        |
+----+-----------+------------+

oder nur

| id |
+----+
| 2  | 
| 3  | 
| 6  | 
+----+

bitte helfen Sie, da dies eine doppelte Frage sein kann. Ich habe immer noch Probleme, da mein SQL etwas rostig ist.

Ich kann Duplikate erhalten, bei denen meta_key = 'import_id' wie folgt lautet:

SELECT id,meta_value
FROM TABLE 
WHERE meta_key='import_id'
GROUP BY meta_value
HAVING Count(meta_value) > 1

und ich möchte daraus die NON MIN (id) Werte

2
Sortitout

wenn Sie die Zeile mit der niedrigsten ID beibehalten möchten:

DELETE n1 FROM table n1, table n2 WHERE n1.id > n2.id AND n1.meta_key = n2.meta_key

ODER wenn Sie die Zeile mit der höchsten ID behalten möchten:

DELETE n1 FROM table n1, table n2 WHERE n1.id < n2.id AND n1.meta_key= n2.meta_key
2
Cameron L

Erstellen Sie eine Sicherungskopie Ihrer wp_usermeta-Tabelle und versuchen Sie es:

DELETE FROM `wp_usermeta` WHERE `umeta_id` NOT IN (SELECT * FROM (SELECT MAX(`um`.`umeta_id`) FROM `wp_usermeta` um GROUP BY `um`.`meta_key`, `um`.`meta_value`) x)

Verwenden Sie MIN anstelle von MAX, um die Zeile mit der niedrigsten ID beizubehalten.

1
MahdiY