2012-02-17 115 views
1

不知道爲什麼這不起作用 - 請問有人可以幫忙嗎?語法錯誤Mysql

update c set c.images = "" 
from j17_content c 
inner join j17_jreviews_content rc on rc.contentid = c.id 
inner join j17_categories cat on cat.id = c.catid 
where cat.path like "cakes%" 
and c.created_by in (62,63,99) 
and rc.email = 'email' 

錯誤#1064 - 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法的線條「j17_content℃的內部連接上rc.contentid = c.id j17_jreviews_content RC在」 2

更新手冊:

現在嘗試

UPDATE j17_content c SET c.images='' 
inner join j17_jreviews_content rc on rc.contentid = c.id 
inner join j17_categories cat on cat.id = c.catid 
where cat.path like 'cakes%' 
and c.created_by in (62,63,99) 
and rc.email = 'email' 

仍然得到

錯誤#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊正確的語法使用近「上rc.contentid = c.id內內加盟j17_jreviews_content RC加入j17_catego」第2行

回答

0

很抱歉,這是不是真的,你們建議的方式 - 但我有ID的列表,並更新他們沒有使用所有ID的聲明加入

1

UPDATE不採取FROM

的語法應該是UPDATE j17_content c SET c.images="" INNER JOIN ...

+0

感謝您的答案 - 現在即時獲取#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第2行的'rc.contentid = c.id內部連接j17_catego'的'內部連接j17_jreviews_content rc'附近使用正確的語法。 – Rob 2012-02-17 15:57:56

+0

@Rob您也無法更新連接結果。使用子查詢。 – Borealid 2012-02-17 16:00:26

0

取代你的雙引號(「)與單一的人(')

1

這是essentailly代碼

試試這樣說:

update j17_content c 
inner join j17_jreviews_content rc on rc.contentid = c.id 
inner join j17_categories cat on cat.id = c.catid 
where cat.path like 'cakes%' 
and c.created_by in (62,63,99) 
and rc.email = 'email' 
set c.images = ''; 

這是一個更新加入

我有一個考慮到查詢的因式分解型式

update 
(
    SELECT content_id id 
    FROM j17_jreviews_content 
    WHERE email = 'email' 
) rc 
inner join j17_content c USING (id) 
inner join 
(
    SELECT id catid 
    FROM j17_categories 
    WHERE created_by in (62,63,99) 
    AND path like 'cakes%' 
) cat USING (catid) 
set c.images = ''; 

您需要索引的子查詢涉及

ALTER TABLE j17_categories ADD INDEX created_by_path_id_ndx (created_by,path,id); 
ALTER TABLE j17_jreviews_content ADD INDEX email_content_id_ndx (email,content_id); 
+0

我的mysql服務器肯定有問題! #1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的where cat.path like「cakes%」和c.created_by(62,63,99)和rc.email ='email'附近使用正確的語法 – Rob 2012-02-17 16:07:13