2012-02-17 15 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構文に誤りがあります。

今すぐしよう:2

UPDATEラインで「インナーがでrc.contentid = c.id上j17_jreviews_content RCを参加cのj17_contentから」近く使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください

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構文でエラーが発生しています。右の構文は近く「rc.contentid = c.id内部のインナー参加j17_jreviews_content RCをj17_categoに参加する」を使用FROMを負いません

答えて

0

は申し訳ありませんが、これは本当に君たちが提案方法ではありません関与 - 私はIDのリストを持って、それらを更新しますすべてのIDのin文との結合を使用しない

1

UPDATEライン2にするためにMySQLサーバのバージョンに対応するマニュアルを確認してください。

構文はUPDATE j17_content c SET c.images="" INNER JOIN ...

+0

答えに感謝しています - 今は#1064になっています - あなたはSQL構文に誤りがあります。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックしてください。右側の構文は、内部のjoin j17_jreviews_content rc on rc.contentid = c.id inner join j17_catego 2行目 – Rob

+0

@Robまた、結合結果を更新することもできません。サブクエリを使用します。 – Borealid

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サーバのバージョンに対応するマニュアルを見て、 'cat.path like "ケーキ%"とc.created_by in(62,63,99)とrc.email =' email '1行目 – Rob