我试图通过内部联接更新表格?我想我的代码中遗漏了一些东西;我做得对吗?
UPDATE a
SET product_name = "value2"
from tbl1 a
INNER JOIN tbl2 b
ON a.sid = s.id
Having b.product_name="value1"
@Gordon:以下查询可以与您的查询相同:
UPDATE tbl1 a
INNER JOIN tbl2 b
ON a.sid = s.id
SET product_name = 'value2'
having b.product_name = 'value1';
如果您需要更多说明,请与我们联系。
谢谢
答案 0 :(得分:3)
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
子句,因此当没有where
子句时,它的行为很像group by
子句。实际上,having
子句已扩展,因此它可以使用select
语句中定义的列别名(不适用于update
查询)。
使用having
子句的查询在MySQL中实际上并不起作用,因为扩展名适用于select, but not the
更新. Replace it with a
statement or move the condition to the
on`子句。