Mysql

Mysql從另一個有條件的表更新表

  • July 21, 2021

在mysql中我有2個表。

第一的

  • wp_postmeta_import

第二

  • wp_postmeta_temp

這些表具有以下列:

  • meta_id
  • post_id
  • 元密鑰
  • 元值

當 post_id 與 wp_postmeta_import 的 post id 相同並且 meta_key 的值為 _variation_description 時,我只需要更新 wp_postmeta_temp 的列 meta_value,因為在表中是其他 post_id 和其他值

我嘗試了一些程式碼,這是唯一可以稍微起作用的程式碼,但它改變了我需要的行,而在另一個 meta_key 中它給了我 NULL。

UPDATE wp_postmeta_temp  
SET meta_value = (
                   SELECT 
                     meta_value 
                   FROM 
                     wp_postmeta_import 
                   WHERE 
                     wp_postmeta_import.post_id = wp_postmeta_temp.post_id 
                   AND 
                     wp_postmeta_temp.meta_key = '_variation_description' 
                );

該表有行,例如任何 post_id:

  • meta_id:變數(82649,82650..)
  • post_id: 5065
  • meta_key:_variation_description 或 _regular_price 或 total_sales ecc..
  • meta_value: 變數 (15, 0, 200 …)

我希望我很清楚任何人都可以幫助我,好嗎?

您應該加入表格,以便所有行都連接在一起。

在開始之前,使用帶有內部連接的選擇來查看它是否適合。

UPDATE wp_postmeta_temp wpmt 
INNER JOIN wp_postmeta_import wpi ON wpi.post_id=wpmt.post_id AND wpmt.meta_key = '_variation_description'
  SET wpmt.meta_value= wpi.meta_value 

引用自:https://dba.stackexchange.com/questions/286141