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条款。你会发现你的查询是完全不充分的,最重要的是它甚至没有编译。