仅当表中不存在某条记录时,我才想更新某条记录。
我尝试了类似于以下的 SQL。
update mytable
set val = 'someval'
where id = 'someid' and
0 = (select count(*) from mytable where col='val2');
失败并出现以下错误。
您不能在 FROM 子句中指定要更新的目标表“mytable”
只有一个进程正在更新此表,因此无需保留操作的原子性。
我知道我可以使用两个 SQL 查询来做到这一点,但是有没有办法在单个查询中做到这一点?
最佳答案
因为您指的是同一个表,所以最好的方法是使用 LEFT JOIN
:
update mytable t left join
mytable t2
on t2.col = 'val2'
set val = 'someval'
where t.id = 'someid' and t2.col is null;
关于mysql - SQL:如果某种记录不在同一个表中,则更新一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381125/