Einige meiner Posts haben zwei Werte für einen cb_full_width_post
namens cb_full_width_post
. Ich möchte nur die Datensätze behalten, die einen Metawert von nosidebar-narrow
. Das bedeutet, ich muss
cb_full_width_post
nosidebar-narrow
Bisher habe ich dieses SQL entwickelt, um Posts mit zwei oder mehr Werten für den gleichen cb_full_width_post
zu identifizieren:
SELECT post_id, meta_key, count(*) FROM wp_postmeta WHERE meta_key = 'cb_full_width_post' GROUP BY post_id, meta_key HAVING COUNT(*) > 1
Dies gibt eine Ergebnismenge von wp_postmeta-Datensätzen mit mehr als einem Wert für cb_full_width_post
.
Ich bin auf dem nächsten Schritt fest. Ich muss die Ergebnismenge aus der obigen Abfrage verwenden, die mir die Post-IDs gibt, auf die ich zielen muss. Ich muss diese Post-IDs in wp_postmeta finden und alle Datensätze löschen, bei denen meta_value != 'nosidebar-narrow'
Bearbeiten: einige visuelle Informationen
Record #1 post_id: 1 meta_key: cb_full_width_post meta_value: Good Record #2 post_id: 1 meta_key: cb_full_width_post meta_value: Bad_if_duplicate Record #3 post_id: 2 meta_key: cb_full_width_post meta_value: Bad_if_duplicate
Ich möchte nur Datensatz Nr. 2 löschen, weil er Metawert “Bad_if_duplicate” hat und weil es ein Duplikat ist (gleiche Beitrags-ID wie Datensatz Nr. 1). Obwohl Datensatz # 3 den Metawert “Bad_if_duplicate” hat, möchte ich ihn nicht löschen, da dies der einzige Metawert ist, dh es ist kein Duplikat.
Sie benötigen dazu keine Select-statement, eine DELETE
statement kann die Datensätze finden. Stellen Sie sicher, zuerst Ihre database zu sichern, dann versuchen Sie die folgende SQL-Abfrage.
DELETE FROM wp_postmeta WHERE meta_key = 'cb_full_width_post' AND meta_value != 'nosidebar-narrow'