2013-01-23 46 views
0

我想不過,我收到此錯誤使用該查詢SQL UPDATE JOIN

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

我看不出有任何語法錯誤。我從這個論壇上的例子中提出了這個查詢。

+0

http://stackoverflow.com/questions/8057565/mysql-update-statement-inner-join-tables –

回答

2

刪除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'); 
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 with Demo

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' 

要轉換爲更新語句,我添加了一個「SET」子句表引用之後和WHERE子句前,然後再更換「SELECT ... FROM」與「UPDATE」關鍵字。瞧。

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'