2017-01-24 4 views
-2

すべてのNULL値を取り除き、クエリの結果からdimension_prefix列の=記号に置き換えようとしています。私はSYNTAXエラーが発生し続けますが、私はどこが間違っているのか分かりません。どんな助けでも大歓迎です。おかげ選択クエリを更新します。

私は

エラー#1064を取得しています - あなたは、あなたのSQL構文でエラーが発生しています。 >近くに使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルをチェック '(>選択]をdimension_prefixlengthwidthheight、OVD。name、p.`product_iを' での>行1

UPDATE oc_product_option_value_dimension SET dimension_prefix = '='  WHERE dimension_prefix IS NULL IN(
SELECT `dimension_prefix`,`length`,`width`,`height`,ovd.`name`,p.`product_id`,pov.product_option_value_id 

FROM (SELECT product_id FROM `oc_product` ORDER BY product_id ASC) AS p 
LEFT JOIN `oc_product_option_value` pov ON  pov.product_id=p.product_id 
LEFT JOIN `oc_product_option_value_dimension` povd ON povd.product_option_value_id=pov.product_option_value_id 
LEFT JOIN `oc_option_value_description` ovd ON ovd.option_value_id=pov.option_value_id 
LEFT JOIN `oc_option_description` od ON od.option_id=ovd.option_id 
WHERE ovd.`name` regexp '^[0-9]+') 
+1

そして、あなたのエラー...?見てみましょう – Siyual

+1

される。。。あなたはその中のためサブクエリを持つ無数の列を返し、あなたはどこにエラーが? –

答えて

1
Actually you are trying is null in .. which is giving you the syntax error. 

UPDATE oc_product_option_value_dimension SET dimension_prefix = '=' 
    WHERE coalesce(dimension_prefix,"@@") = (
     SELECT coalesce(`dimension_prefix`,"@@") 
     FROM (SELECT product_id FROM `oc_product` ORDER BY product_id ASC) AS p 
     LEFT JOIN `oc_product_option_value` pov ON  pov.product_id=p.product_id 
     LEFT JOIN `oc_product_option_value_dimension` povd ON povd.product_option_value_id=pov.product_option_value_id 
     LEFT JOIN `oc_option_value_description` ovd ON ovd.option_value_id=pov.option_value_id 
     LEFT JOIN `oc_option_description` od ON od.option_id=ovd.option_id 
     WHERE ovd.`name` regexp '^[0-9]+') 
+0

NVLは何ですか?それは何をするのか不思議に思っていますか? – Astrea

+0

@Astreaごめんなさい。NVLはnull値を扱うためのOracleの関数です。回答を更新しました –

+0

ありがとうございました。これは新しいエラーを引き起こしています#1093 - FROM句の更新のためのターゲットテーブル 'oc_product_option_value_dimension'を指定することはできません。これは、この質問からhttp://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update-in-from-clauseです。私はそれが私のSelectステートメントでoc_product_option_valueを使用していることがわかったので – Astrea

関連する問題