mysql更新数据错误记录

以下内容是本人在工作过程中所碰到的错误,以此记录下来,避免踩坑。
大家都知道,SQL更新语句:

update table set column1 = 'XXX',column2 = 'XXX' where 条件...

我需要更新数据库中的某个值,但是条件中的值需要使用子查询查出来,按照这个更新语法,写出了以下的语句:

update FND_FLEX_VALUES set NAME '固定金额',DESCRIPTION = '固定金额' where ID = (select m.ID from FND_FLEX_VALUES m join FND_FLEX_SET n on n.ID = m.SET_ID and n.CODE = 'CONTRACT_AMOUNT_TYPE' and m.NAME like '固定金额%')

满心欢喜去执行,结果报错了,错误如下:
you can not specify target table ‘FND_FLEX_VALUES’ for update in FROM clause,正确的写法是这样

update FND_FLEX_VALUES set NAME = '固定金额',DESCRIPTION = '固定金额' where ID = (select a.ID from(select m.ID from FND_FLEX_VALUES m......) as a);

你会发现在结果集上面套了一层自我查询,这样就不会报错了。

你可能感兴趣的:(mysql,数据库,java)