2012-09-19 80 views
2

我有一个带有一些更新查询的.sql文件。查询更新另一个表,如果第一次更新在mysql中失败

什么,我找时更新查询失败的,我应该能够执行另一个更新查询

例如Update table1 set col1="zbc" where id=1; 假设上述查询失败,因为找不到“id = 1”。

然后我想执行下面的查询做另一个表更新:

Update table2 set col1="zbc" where id=1; 

因为我想这在.sql文件去,我要寻找一个单一查询来实现这个如果使用/箱声明或类似的东西。

+0

我会加载数据到一个新表,然后尝试更新到table1。如果失败,更新表2。 –

回答

0

如果只是运行第二个查询,并检查是否在第一表中存在例如这些行:

Update table1 set col1="zbc" where id=1; 
Update table2 set col1="zbc" where id=1 
          and not exists (select id from table1 where id=1); 

或使用ROW_COUNT() MySql函数和IF。它返回最后一条语句更改,删除或插入的行数。

+0

这是一个选项,但避免它,因为这将意味着运行每个更新的额外更新查询。有效果如果我必须做500次更新,我需要运行1000个查询。不是一个很好的选择。 – anzaan

+0

我已经编辑我的答案是:尽量使用ROW_COUNT()的MySQL函数 – valex

+0

日Thnx VALEX乌拉圭回合答:) 例如使用与IF函数ROW_COUNT()的: 更新表1组COL1 = “ZBC” 其中id = 1; update table2 set col1 =“zbc”where id = 1 and if(ROW_COUNT()= 0,1,0)= 1; – anzaan