1

このクエリを使用しようとしています

UPDATE products  
SET products.product_price = '87.00000'
FROM products
INNER JOIN product_category
ON products.product_id = product_category.product_id 
WHERE product_category.category_id = '64'

ただし、次のエラーが表示されます。#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM table products INNER JOIN table product_category ON prod' at line 3

構文エラーはありません。このフォーラムの例からこのクエリを作成しました。

4

4 に答える 4

3

行を削除しFROM productsます。句SET ...の直前に行を挿入 します。WHERE

明確にするために:

UPDATE ...
JOIN ...
SET ...
WHERE ...

あなたもできる

UPDATE products p
SET p.product_price='87.00000'
WHERE EXISTS (SELECT NULL 
              FROM product_category pc
              WHERE p.product_id = pc.product_id
              AND pc.category_id = '64');
于 2013-01-23T23:05:55.960 に答える
1

以下を使用できます。

UPDATE products 
INNER JOIN product_category
  ON products.product_id = product_category.product_id 
SET products.product_price = '87.00000'
WHERE product_category.category_id = '64';

デモで SQL Fiddle を参照してください

于 2013-01-23T23:08:53.360 に答える
1

次のように、SET句はテーブル参照の後、WHERE句の前にある必要があると思います。

UPDATE products
 INNER
  JOIN product_category
    ON products.product_id = product_category.product_id 
   SET products.product_price = '87.00000'
 WHERE product_category.category_id = '64'

そのような UPDATE が必要な場合に、その構文を取得する方法を次に示します。私は常に select ステートメントから始めます。これにより、更新される行を知ることができます。例えば:

SELECT p.*, c.*
  FROM products p
  JOIN product_category c
    ON p.product_id = c.product_id 
 WHERE c.category_id = '64'

これを update ステートメントに変換するにはSET、テーブル参照の後、句の前に " " 句を追加し、" " キーワードをWHERE" " に置き換えます。出来上がり。SELECT ... FROMUPDATE

于 2013-01-23T23:09:26.923 に答える
1
UPDATE products
INNER JOIN product_category
ON products.product_id = product_category.product_id 
SET products.product_price = '87.00000'
WHERE product_category.category_id = '64'
于 2013-01-23T23:09:40.373 に答える