Ce n'est pas WordPress spécifique, mais il est intéressant de noter que c'est un WP db Je travaille avec ...mise à jour groupée table MySQL avec les données concaténés d'une autre table
Je dois mettre à jour la valeur de la table posts
post_title
pour toutes les entrées avec post_type='appearance'
. Le post_title
actuel commence par le nom désiré, mais il se termine par "apparence [un peu]". Donc, de "l'apparence" à la fin doit être retiré, et il doit être remplacé par le meta_value
du tableau postmeta
où meta_key = _place_id
et post_id
est égal à la ID
du tableau posts
. Par exemple: il y a un article avec l'ID 102
intitulé "Apparence de John Doe 102". Dans le tableau postmeta
, où meta_key = _place_id
et post_id = 102
, meta_value = 108
. Ainsi, le résultat final serait post_title = John Doe 108
.
Ceci est compliqué au-delà de moi, mais j'imagine qu'une jointure est nécessaire. Et je pense que deux requêtes distinctes auraient du sens. Donc, quelque chose de similaire à:
UPDATE posts
SET post_title = TRIM(TRAILING ' appearance %' FROM post_title)
WHERE post_type='appearance'
et
UPDATE posts
left join postmeta on
posts.ID= postmeta.post_id
set
posts.post_title = CONCAT(posts.post_title, " ", postmeta.meta_value WHERE postmeta.meta_key = '_place_id')
Ça a l'air génial. Malheureusement, je reçois une erreur: 'Nombre de paramètres incorrect dans l'appel à la fonction native 'SUBSTRING_INDEX'' – David
@David Désolé, corrigé une faute de frappe, cela devrait fonctionner maintenant. –
Merci. Beau. Une chose qui manquait, mais s'est avéré bien, spécifiait le post_type. – David