Я пытаюсь обновить таблицу 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";}}