Mysql 我可以通过内部联接更新表吗?

Mysql 我可以通过内部联接更新表吗?,mysql,sql,Mysql,Sql,我正在尝试通过内部联接更新表?我想我的代码中缺少了一些东西;我做得对吗 UPDATE a SET product_name = "value2" from tbl1 a INNER JOIN tbl2 b ON a.sid = s.id Having b.product_name="value1" @戈登:下面的查询能否与您的查询相同: UPDATE tbl1 a INNER JOIN tbl2 b ON a.sid = s.id S

我正在尝试通过内部联接更新表?我想我的代码中缺少了一些东西;我做得对吗

UPDATE a    
  SET product_name = "value2"   
  from tbl1 a
  INNER JOIN tbl2 b
    ON a.sid = s.id
   Having b.product_name="value1"
@戈登:下面的查询能否与您的查询相同:

  UPDATE tbl1 a 
  INNER JOIN tbl2 b
  ON a.sid = s.id 
  SET product_name = 'value2' 
  having b.product_name = 'value1';
请让我知道,如果你需要更多的澄清


谢谢

MySQL的正确语法是:

UPDATE tbl1 a INNER JOIN
       tbl2 b
       ON a.sid = s.id AND b.product_name = 'value1'
  SET product_name = 'value2' ;
编辑(回应评论):

正式地说,只有在有聚合时才允许使用
having
子句。而且,您不能用任何SQL方言更新聚合查询

MySQL扩展了
having
子句,因此当没有
groupby
子句时,它的行为非常类似于
where
子句。实际上,
having
子句是扩展的,因此它可以使用
select
语句中定义的列别名(这在
update
查询中不适用)


使用
having
子句的查询实际上在MySQL中不起作用,因为扩展名用于
select,而不是
update
。将其替换为
where
语句,或将条件移动到
on`子句。

MYSQL;抱歉,刚刚更新!你能看看我最新的问题吗?我想确定我对“having”的查询是否也一样thing@user3000457,请阅读having条款。你会发现你的查询是完全不充分的,最重要的是它甚至没有编译。