Обновить таблицу MySQL с помощью инструкции SELECT - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь обновить таблицу MySQL (WP) данными из временной таблицы. Первая таблица wp_postmeta содержит следующие столбцы: meta_id, post_id, meta_key и meta_value. Таблица temp содержит данные для обновления столбца meta_value таблицы wp_postmeta. Его столбцы: sku и role_based_price. Оба поля должны использоваться в качестве meta_value данных с использованием _sku и _role_based_price meta_key соответственно.

Я экспортировал дату из другой базы данных, в которой есть другие post_id, поэтому единственное поле, которое я могу используйте для сравнения _sku и обновите значение _role_based_price, если sku соответствует.

Проблема в том, что оба поля (sku и role_based_price) хранятся в столбцах meta_key & meta_value одного и того же таблица.

Псевдокод должен выглядеть примерно так:

UPDATE wp_postmeta
SET meta_value = temp.role_based_price
IF meta_key = _role_based_price
WHEN meta_key = sku AND meta_value = temp.sku

Пример данных:

Таблица : temp

  SKU  |   RoleBasedPrice
-------------------------------------

MCI51C  a:2:{s:7:"cliente";a:1:{s:13:"regular_price";s:1:"6";}s:12:"distribuidor";a:1:{s:13:"regular_price";s:4:"4,50";}}
MCI51Y  a:2:{s:7:"cliente";a:2:{s:13:"regular_price";s:1:"6";s:13:"selling_price";s:4:"5,50";}s:12:"distribuidor";a:2:{s:13:"regular_price";s:4:"4,50";s:13:"selling_price";s:0:"";}}
MCI51M  a:2:{s:7:"cliente";a:1:{s:13:"regular_price";s:1:"6";}s:12:"distribuidor";a:1:{s:13:"regular_price";s:4:"4,50";}}
PL001   a:2:{s:7:"cliente";a:2:{s:13:"regular_price";s:2:"27";s:13:"selling_price";s:2:"25";}s:12:"distribuidor";a:2:{s:13:"regular_price";s:2:"19";s:13:"selling_price";s:4:"16,7";}}
PL002   a:2:{s:7:"cliente";a:2:{s:13:"regular_price";s:3:"3,5";s:13:"selling_price";s:0:"";}s:12:"distribuidor";a:2:{s:13:"regular_price";s:3:"2,2";s:13:"selling_price";s:0:"";}}
MCI51N  a:2:{s:7:"cliente";a:1:{s:13:"regular_price";s:1:"6";}s:12:"distribuidor";a:1:{s:13:"regular_price";s:4:"4,50";}}
PL008   NULL
PL010   a:2:{s:7:"cliente";a:2:{s:13:"regular_price";s:2:"18";s:13:"selling_price";s:0:"";}s:12:"distribuidor";a:2:{s:13:"regular_price";s:2:"13";s:13:"selling_price";s:0:"";}}
PL062   a:2:{s:7:"cliente";a:2:{s:13:"regular_price";s:1:"3";s:13:"selling_price";s:0:"";}s:12:"distribuidor";a:2:{s:13:"regular_price";s:4:"1,95";s:13:"selling_price";s:0:"";}}

-------------------------------------

Таблица wp_postmeta:

 meta_id  | post_id  |  meta_key  | meta_value
--------------------------------------------------------------------------

1   2   _wp_page_template   default
2   3   _wp_page_template   default
7   7   _wp_attached_file   woocommerce-placeholder.png
11  13  _sku    MCI51C
12  13  total_sales     0
13  13  _tax_status     taxable
14  13  _tax_class  
15  13  _manage_stock   no
16  13  _backorders     no
17  13  _sold_individually  no
18  13  _virtual    no
19  13  _downloadable   no
20  13  _download_limit     0
21  13  _download_expiry    0
22  13  _stock  NULL
23  13  _stock_status   instock
24  13  _wc_average_rating  0
25  13  _wc_review_count    0
26  13  _product_version    4.0.1
28  14  _sku    860163
29  14  total_sales     0
30  14  _tax_status     taxable
31  14  _tax_class  
32  14  _manage_stock   no
--------------------------------------------------------------------------

Мне нужно вставить / обновить данные столбца RoleBasedPrice из временной таблицы в столбец meta_value таблицы wp_postmeta, используя сравнение столбца SKU , который также является meta_value с meta_key = _sku.

IE post_id = 13 имеет _sku = MCI51 C в таблице wp_postmeta. Это те же данные SKU таблицы Temp, поэтому мне нужно добавить в таблицу wp_postmeta следующее:

meta_id=autogenerated
post_id=13
meta_key=_role_based_price
meta_value=a:2:{s:7:"cliente";a:1:{s:13:"regular_price";s:1:"6";}s:12:"distribuidor";a:1:{s:13:"regular_price";s:4:"4,50";}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...