2016-06-09 2 views
1

Je travaille sur un site wordpress où je dois changer le chemin de téléchargement pour toutes les images d'attachement (je n'ai aucune idée pourquoi le client d'abord choisi de ne pas les avoir organisé.)Modification Colonne A rejoint SQL Query

Cette est ce que je suis en train de courir pour sélectionner mes pièces jointes, et saisir ce que la date de publication des messages des parents était afin que je puisse saisir correctement ce que je veux.

select a.id as child_post_id, a.guid as upload_path, b.post_date as parent_post_date 
from wp_posts a 
left outer join wp_posts b 
on a.post_parent = b.id 
where 
a.post_type = 'attachment' 
and b.post_date between '2015-11-17 00:00:00' and '2015-11-17 23:59:59' 

qui tire les 8 ou si les pièces jointes d'image Je cherche dans cette période comme un test et ils sont jumelés à des postes de parents id publier, donc je sais que je reçois ce que je veux.

Maintenant, je veux remplacer une partie de la valeur dans la colonne guid, alors je fais un remplacement dans la colonne en sortie de « upload_path »

update upload_path 
set upload_path = replace(upload_path, 'wp-content/uploads/', 'wp-content/uploads/2015/11/') 
; 

Cela entraînera un échec de la syntaxe et je me sens comme si je tirais une manœuvre étrange, la recherche d'une réponse a été difficile.

Je ne suis pas super expérimenté approfondir en SQL, mais j'essaie d'apprendre.

Dois-je enregistrer cette requête, puis exécuter une mise à jour sur cette requête sauvegardée?

Ceci est probablement une solution facile, quelqu'un peut m'aider s'il vous plaît - pointez-moi juste dans la bonne direction, s'il vous plaît.

Exécuter MySQL 5.1.73 (nous devons exécuter ce que le serveur de production est en cours d'exécution)

Répondre

-1

Il se trouve que je tentais d'exécuter une mise à jour dans une instruction select. Ce qui est un non-go.

J'ai dû exécuter une instruction de mise à jour, puis définir la jointure interne et déclarer chaque "where" comme limiteur dans cette commande. en utilisant la syntaxe "et".

UPDATE wp_posts AS a 
INNER JOIN wp_posts AS b ON a.post_parent = b.id 
and a.post_type = 'attachment' 
and b.post_date between '2015-11-17 00:00:00' and '2015-11-17 23:59:59' 
set a.guid = replace(a.guid, 'wp-content/uploads/', 'wp-content/uploads/2015/11/') 
limit 0,30 
; 

merveilleuse expérience d'apprentissage. Merci à tous ceux qui ont jeté un coup d'oeil.

+0

BTW l'one downvote est de quelqu'un qui s'est fâché je n'ai pas choisi sa solution incorrecte –