iT邦幫忙

0

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

出發點是文章 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

就覺得哪裡怪怪的
我要取的資料是 wp_posts guid
但我回來要改的也是 wp_posts guid

報錯 :

#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

2 個回答

0
rogeryao
iT邦研究生 4 級 ‧ 2018-09-25 13:43:48
最佳解答

update A
set A.guid=B.guid
from wp_posts AS A
left join wp_postmeta AS C on C.post_id=A.ID
left join wp_posts AS B on B.ID=C.meta_value
where 1=1
and C.post_id='123'
and C.meta_key='_thumbnail_id'

0
77012904
iT邦新手 3 級 ‧ 2018-09-24 14:33:33

懶得詳細看,不過你既然用了別名,那麼你update的那一行,也應該用別名

然後你join的條件也寫得很奇怪. where的條件跟 join on的條件應該顛倒過來放吧

我要發表回答

立即登入回答