2016-06-07 83 views
0

我刚才找出了更新没有匹配的记录和更新匹配的记录之间的MySQL查询的结果已经有值没有区别?对零行进行差异更新与未更改记录相比较?

我有这样的查询:

UPDATE uri SET is_active = 1 WHERE f_site_id = '73' AND language_code = 'NL' AND additional = 'item' AND is_forwarder = '0' 

如果我运行此查询,并有匹配的记录数据,但它们并没有改变,我得到的0行的结果影响? 如果我没有任何记录与上面的WHERE选择,MySQL返回0受影响的记录....

我需要知道更新后,如果有匹配的记录与否。 记录中的数据是否已经相同并不重要,但我需要知道有匹配的记录。

我该如何做到这一点?

回答

1

只需使用前单独SELECT查询来更新:

SELECT count(*) as count FROM uri WHERE f_site_id = '73' AND language_code = 'NL' AND additional = 'item' AND is_forwarder = '0' 

计数行是不是一个非常耗费资源的任务,你似乎并不有许多复杂的条件。

如果要优化查询,那么在SELECT检查计数值后,如果它> 0,则只运行UPDATE查询。没有任何意义的更新,如果没有更新。

+0

我认为最好是优化它,只使用一个查询,但我猜我现在得到的问题比一个额外的查询更大。谢谢:) – Abayob