2016-06-07 41 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