多表更新(MySQL)
我有一个关于多表更新(MySQL)的问题。考虑表T1和T2。t1的PKEY是“tid”,它是t2中的外键。t2中有一个字段“qtyt2”,它依赖于表t1中名为“qtyt1”的字段。考虑下面的SQL语句:多表更新(MySQL),mysql,sql,sql-update,Mysql,Sql,Sql Update,我有一个关于多表更新(MySQL)的问题。考虑表T1和T2。t1的PKEY是“tid”,它是t2中的外键。t2中有一个字段“qtyt2”,它依赖于表t1中名为“qtyt1”的字段。考虑下面的SQL语句: UPDATE t2,t1 SET t2.qtyt2=IF(( t2.qtyt2- t1.qtyt1 )<0,0,( t2.qtyt2- t1.qtyt1 ) ), t1.qtyt1 ="Some value.." WHERE t2.tid="some value.."
UPDATE t2,t1
SET t2.qtyt2=IF(( t2.qtyt2- t1.qtyt1 )<0,0,( t2.qtyt2- t1.qtyt1 ) ),
t1.qtyt1 ="Some value.."
WHERE t2.tid="some value.."
AND t2.tid=t1.tid
更新t2、t1
设置t2.qtyt2=IF((t2.qtyt2-t1.qtyt1)首先,建议将联接显式化。其次,我认为您的条件有输入错误,应该是,其中t2.qtyt2='Some value..'
UPDATE t2 JOIN t1 ON (t2.tid=t1.tid)
SET t2.qtyt2= IF(( t2.qtyt2- t1.qtyt1 )<0, 0,( t2.qtyt2- t1.qtyt1 ) ),
t1.qtyt1 ="Some value.."
WHERE t2.qtyt2="Some value..";
更新t2连接t1 ON(t2.tid=t1.tid)
设置t2.qtyt2=IF((t2.qtyt2-t1.qtyt1)我不相信MySQL能保证更新发生的顺序。唯一重要的时间是在使用带有外键约束的InnoDB表时,文档中明确指出,不保证顺序,更新可能会失败。在这种情况下,您应该使用单独的更新e语句,这应该不是问题,因为使用InnoDB可以隔离事务