直接用 sql 進行資料表與資料表的更新?令我蛋疼的數據庫

火爆浪子
  • 2.8k

出發點是文章 ID,假設為 123
我現在要透過 123 去找 wp_postmeta 資料表,找到符合的 post_id = 123 時,再從該筆符合 meta_key = _thumbnail_id and meta_value = 456
然後再用 456 這個 ID 去找 wp_posts 資料表的 ID,再將該筆 guid 值拿回去給文章 ID 123 去 UPDATE 剛帶回來的 guid

資料表 wp_postmeta

post_id / meta_key / meta_value
123 / _thumbnail_id / 456

資料表 wp_posts (我要的值)

ID / guid
456 / 我要的guid值

資料表 wp_posts (帶回去取代文章)

ID / guid
123 / 將「我要的guid值」丟到這

有點弔詭,繞成這樣
但我還真的不知道怎麼表對表更新
我要更新的是同一個資料表、同一個欄位,但是不同 ID
邏輯整個死了......

我大概寫成這樣

UPDATE wp_posts
SET posts.guid = posts.guid 
FROM wp_posts posts
INNER JOIN wp_postmeta meta
ON meta.meta_key = '_thumbnail_id'
WHERE meta.post_id = posts.ID

報錯 :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM wp_posts posts
INNER JOIN wp_postmeta meta 
ON meta.meta_key = '_thumbnai' at line 3

PS這數據庫不是我寫的,我是要把數據庫轉到我這,要先篩選和整理數據

回复
阅读 1k
1 个回答
UPDATE `wp_posts` a, `wp_posts` b, `wp_postmeta` c
SET a.`guid` = b.`guid`
WHERE c.`post_id` = 123
    AND c.`meta_key`='_thumbnail_id'
    AND b.`id` = c.`meta_value`
    AND a.`id` = c.`post_id`;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏