SQL中使用联接的更新的正确语法是什么?

SQL中使用联接的更新的正确语法是什么?,sql,Sql,几分钟前我发布了一个问题,得到了这个问题 update pf set price_test = (p.PRICE * .6) from product as p inner join product_featured as pf on pf.product_id = p.product_id 这是我的数据库结构 产品表 product_id int(11) NO PRI NULL auto_increment model varchar(64) NO NULL

几分钟前我发布了一个问题,得到了这个问题

update pf
set price_test = (p.PRICE * .6)
from product as p
inner join product_featured as pf on pf.product_id = p.product_id
这是我的数据库结构

产品表

product_id  int(11) NO  PRI NULL    auto_increment
model   varchar(64) NO      NULL    
sku varchar(64) NO      NULL    
location    varchar(128)    NO      NULL    
quantity    int(4)  NO      0   
stock_status_id int(11) NO      NULL    
image   varchar(255)    YES     NULL    
manufacturer_id int(11) NO      NULL    
shipping    int(1)  NO      1   
price   decimal(15,4)   NO      0.0000
该产品是一个特色表

 product_id int(11) NO  PRI 0   
 price_test decimal(15,2)   YES     NULL
但这是我的错误

编辑

我需要这个来为SQL工作

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 product as p
inner join product_featured as pf on pf.product_id = p.product' at line 3
更新sql语法为更新。。。设置哪里您正在损坏更新并一起选择…

更新sql语法为update。。。设置哪里您正在破坏更新并一起选择…

试试这个

update product_featured pf
set price_test = (
  select p.PRICE * .6
  from product p
  where pf.product_id = p.product_id
)
试试这个

update product_featured pf
set price_test = (
  select p.PRICE * .6
  from product p
  where pf.product_id = p.product_id
)

我认为您混淆了MySQL语法和MS SQL Server语法,因为SQL Server中不支持从更新;雅各布·爱格用正确的语法给出的答案似乎很好

我认为您混淆了MySQL语法和MS SQL Server语法,因为SQL Server中不支持从更新;雅各布·爱格用正确的语法给出的答案看起来不错

我认为以下内容在MySQL中有效,但我意识到你毕竟说的是SQL Server

UPDATE product AS p
   INNER JOIN product_featured AS pf ON pf.product_id=p.product_id
SET price_test = (p.price * .6)
我收集了SQL Server中的以下工作,但手头没有:

UPDATE product_featured
    SET product_featured.price_test = (product.price * .6)
FROM product_featured
    INNER JOIN product  ON product.product_id = product_featured.product_id

我认为下面的方法在MySQL中有效,但我意识到你毕竟说的是SQL Server

UPDATE product AS p
   INNER JOIN product_featured AS pf ON pf.product_id=p.product_id
SET price_test = (p.price * .6)
我收集了SQL Server中的以下工作,但手头没有:

UPDATE product_featured
    SET product_featured.price_test = (product.price * .6)
FROM product_featured
    INNER JOIN product  ON product.product_id = product_featured.product_id

我需要这个不是为了SQLmysql@Guffa我需要的是SQL而不是mysql…我在question@Tamer你的问题被标记为MySQL。。。而且,正如这个答案所说明的,没有绝对正确的SQL语法;不同的实现都有自己的。我解开了mysql的标签,我需要一个解决方案SQL@Tamer:您的错误消息显示MySQL。。。如果在SQL Server中运行查询,会发生什么情况?我需要这个用于SQL而不是SQLmysql@Guffa我需要的是SQL而不是mysql…我在question@Tamer你的问题被标记为MySQL。。。而且,正如这个答案所说明的,没有绝对正确的SQL语法;不同的实现都有自己的。我解开了mysql的标签,我需要一个解决方案SQL@Tamer:您的错误消息显示MySQL。。。如果在SQL Server中运行查询,会发生什么情况?您需要它来为SQL工作是什么意思?您的错误消息说,…MySQL服务器版本…如果必须使用ANSI SQL,那么@Jacob Eggers的答案就是您想要的答案。您需要它来为SQL工作是什么意思?您的错误消息说,…MySQL服务器版本…如果必须使用ANSI SQL,那么@Jacob Eggers的答案看起来就是您想要的答案。+1,这确实是ANSI SQL标准的更新方式。向前走,OP,并感到满意+1,这确实是进行此类更新的ANSI SQL标准方法。向前走,OP,并感到满意