SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.04.2021 15:11:42

Лео
Участник
Зарегистрирован: 02.04.2021
Сообщений: 4

Как скопировать значение одной строки в другую? Ох уж этот WordPress...

Здравствуйте!

Прошу помочь разобраться с ситуацией.

Сменил тему WordPress. Старая тема записывала кол-во просмотров статьи в произвольное поле с именем "post_views".
А новая тема записывает кол-во просмотров в поле "post_views_new".

В итоге такая картина в phpMyAdmin. Скриншот:
http://joxi.ru/Q2K6KlyTvkeMRm

И таких строк сотни, где на каждый post_id по два разных произвольных поля.

Чтобы не терять просмотры у всех статей - хочу скопировать значения "post_views" в значения "post_views_new".

Сначала думал, что всё просто и можно обойтись таким запросом:

UPDATE wp_postmeta SET post_views_new=post_views

Разумеется, не сработало, т.к. появляется ошибка, что "post_views_new" не является столбцом.
Оно и понятно, это ведь строка. Да и я только начал изучать MySQL.

То есть для одной и той же записи есть два разных произвольных поля с разными значениями кол-ва просмотров.
Осталось придумать как скопировать старые значения в новые, чтобы я потом мог смело удалить старое поле.

Надеюсь, описал правильно. Если что, вот ещё два поясняющих скриншота:

1. Старое произвольное поле: http://joxi.ru/LmGz6JlHlOEpGr
2. Новое произвольное поле: http://joxi.ru/eAOK3BJhk8W7aA

Прошу помочь составить MySQL запрос, который бы решил мою задачу.

Видимо, нужно как-то задействовать столбцы meta_key, meta_value и post_id одновременно.

Неактивен

 

#2 02.04.2021 15:33:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как скопировать значение одной строки в другую? Ох уж этот WordPress...

update  wp_postmeta t SET t.meta_value = (select * from (select t1.meta_value from wp_postmeta t1 where t1.post_id = t.post_id and t1.meta_key = 'post_views') x) where meta_key = 'post_views_new'


https://sqlinfo.ru/articles/info/19.html

Неактивен

 

#3 02.04.2021 17:49:50

Лео
Участник
Зарегистрирован: 02.04.2021
Сообщений: 4

Re: Как скопировать значение одной строки в другую? Ох уж этот WordPress...

Спасибо за помощь!

Только выдаёт ошибку: «Неизвестный столбец 't.post_id' в 'where clause'»

Скриншот: http://joxi.ru/KAgzleyHKyv3W2

Неактивен

 

#4 02.04.2021 18:10:14

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как скопировать значение одной строки в другую? Ох уж этот WordPress...

какая у вас версия mysql?
подозреваю, что это phpadmin тупит.
вы можете выполнить запрос в родном клиенте mysql?
или используйте второй способ из https://sqlinfo.ru/articles/info/19.html

Неактивен

 

#5 03.04.2021 22:01:54

Лео
Участник
Зарегистрирован: 02.04.2021
Сообщений: 4

Re: Как скопировать значение одной строки в другую? Ох уж этот WordPress...

Версия  5.7.29. Скриншот: http://joxi.ru/a2Xk8b6h4jn87m

Работаю в OpenServer. Возможно, из-за этого глюки с запросом.

Про второй способ не понял. Там решение ошибок 1093 и 1235. У меня 1054.

Неактивен

 

#6 03.04.2021 22:23:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как скопировать значение одной строки в другую? Ох уж этот WordPress...

Лео написал:

Работаю в OpenServer. Возможно, из-за этого глюки с запросом.

Выполните запрос не через phpmyadmin, а через консольный клиент mysql (его можно запустить как через OpenServer, так и через командную строку операционки). Или попробуйте другой клиент, входящий в OpenServer (вроде как там HeidiSQL)


Лео написал:

Про второй способ не понял. Там решение ошибок 1093 и 1235. У меня 1054.

Ok. Упростите запрос до

update  wp_postmeta t SET t.meta_value = (select t1.meta_value from wp_postmeta t1 where t1.post_id = t.post_id and t1.meta_key = 'post_views')  where meta_key = 'post_views_new'


и решайте 1093 smile

Неактивен

 

#7 04.04.2021 02:09:13

Лео
Участник
Зарегистрирован: 02.04.2021
Сообщений: 4

Re: Как скопировать значение одной строки в другую? Ох уж этот WordPress...

Спасибо за подсказку!

Буду пробовать wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson