请帮我解决这个问题,因为我尝试了这个论坛的所有内容,但仍未找到解决方案。
好吧,我有两张桌子:
我想更改表格价格中两个字段的值。 我会给那些具体的价值观。
字段是:
但我想更改ID为31的制造商的字段。
所以,我首先检查INNER JOIN是否正常工作。
SELECT manufacturers.manufacturer_id,
prices.product_id,
prices.product_price,
prices.override,
prices.product_discount_id
FROM manufacturers
INNER prices
ON manufacturers.product_id=prices.product_id
AND manufacturers.manufacturer_id=31;
但是当我尝试更新这两个字段时,我不知道如何使其工作。 例如,我试过这个,但它没有工作:
UPDATE prices
SET prices.override=1
FROM
INNER JOIN prices
ON manufacturers.product_id=prices.product_id
AND manufacturers.manufacturer_id=31;
我也试过这个:
UPDATE prices
SET prices.override=1,
INNER JOIN manufacturers
ON prices.virtuemart_product_id = manufacturers.virtuemart_product_id
AND manufacturers.manufacturer_id=31;
我做错了什么?通常我得到的错误信息是:
#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在#JO; FROM jos_virtuemart_product_prices价格附近使用正确的语法INNER JOIN jos_virtuemart_product_man'在第3行
我读了一些别名,但仍然没有结果。
任何帮助将不胜感激!
答案 0 :(得分:3)
您有一些语法问题,MySQL UPDATE..JOIN
语法是:
UPDATE T
JOIN t2 ON()
SET ..
WHERE ..
其次,您在SET prices.override=1
之后有一个不必要的逗号,所以:
UPDATE prices
INNER JOIN manufacturers
ON prices.virtuemart_product_id = manufacturers.virtuemart_product_id
AND manufacturers.manufacturer_id=31
SET prices.override=1
答案 1 :(得分:0)
如果您正在使用SQL Server for mysql,请尝试此操作:
UPDATE p SET p.override=1
FROM prices p
INNER JOIN manufacturers ON
p.virtuemart_product_id =manufacturers.virtuemart_product_id
AND manufacturers.manufacturer_id=31;
答案 2 :(得分:0)
这是MySQL中的正确语法:
UPDATE prices p JOIN
manufacturers m
USING (product_id)
SET p.override=1
WHERE m.manufacturer_id = 31;
请注意表别名的使用。这些使查询更容易编写和阅读。
您使用的语法适用于SQL Server。
答案 3 :(得分:0)
std::vector
答案 4 :(得分:0)
在MySQL中UPDATE
JOIN
语法不同,SET
运算符应位于JOIN
语句之后。
正确的UPDATE
查询
UPDATE prices P
INNER JOIN manufacturers M ON P.virtuemart_product_id = M.virtuemart_product_id
AND M.manufacturer_id = 31;
SET P.override = 1;