你能建议mysql 8的正确语法吗?它相当于postgres下面的查询:
IF EXISTS (select 1 FROM aggregator.argument where argumentname = 'DEFAULT_FE_PAGE' AND value = 'NEW')
THEN
update aggregator.argument set value='AA' where name = 'DEFAULT_FE_PAGE';
END IF;
感谢
考虑到spencer7593指出的细微差别,只有当至少存在一行具有name=DEFAULT_FE_PAGE
和value=NEW
时,我们才希望更新所有具有name=DEFAULT_FE_PAGE
的行。
我们可以使用多表更新:
UPDATE aggregator.argument AS a1
JOIN aggregator.argument AS a2 USING (name)
SET a1.value='AA'
WHERE a2.name = 'DEFAULT_FE_PAGE' AND a2.value='NEW';
这将使一行a2
同时满足这两个条件,然后将该行连接到具有相同name
的所有行a1
,即使它们具有不同的value
。