我试图获取一个int,添加另一个int并在一个sql命令中写入新数据。我怎样才能做到这一点?这是我的解决方案,但我不起作用。
update accounts set credit = ((select credit from accounts where id = 1679407)+1) where id=1679407;
错误看起来像这样。
Error Code: 1093. Table 'accounts' is specified twice, both as a target for 'UPDATE' and as a separate source for data 0.125 sec
答案 0 :(得分:4)
你似乎想要这个:
update accounts
set credit = credit + 1
where id = 1679407;
答案 1 :(得分:1)
您的方法的问题在于您首先要更新从中检索数据的同一个表。 根据此documentation
中的引文您无法更新表格并从中选择同一个表格 子查询。
虽然有以下的解决方法
Update accounts
set credit =
( (select a.credit from
(select *from accounts)as a where id=1679407)+1)
where id=1679407;
虽然实现更简单的任务是非常复杂的方法,因为你只想将信用增加1并且仅用于特定的id。 此外,上述方式有时可能会导致性能问题。
因此,执行任务的最简单,最有效的方式是@Gordon Linoff在答案中给出的方式。
update accounts
set credit = credit + 1
where id = 1679407;
希望你从这个答案中学到一些东西,除了找到问题的解决方案。