簡體   English   中英

使用WHERE子句檢查記錄是否接收到不同的值

[英]using WHERE clause to check if record is receiving different values

我希望檢查具有給定主鍵的數據庫記錄中的一堆值是否與某些用戶提供的值不同。

一種方法是從數據庫檢索值,然后使用PHP將其與用戶提供的值進行比較。

另一種方法是直接使用DB比較值,如果返回了一條記錄,則知道存在完全匹配:

SELECT COUNT(*)
FROM t
WHERE pk=123
AND c1=321
AND c2=222
...
AND c8=555
AND c9=434;

使用一種方法相對於另一種方法是否有優點或缺點? 數據庫是否足夠聰明,可以在其他值之前過濾pk?

PS。 基於此查詢,如果發生了某些更改,我將對新值進行UPDATE,同時更新date_changed列和changed_by_user列。 由於我也在更新最后兩列,因此無法使用PDOStatement::rowCount() 我想念什么嗎?

使用一種方法相對於另一種方法是否有優點或缺點? 數據庫是否足夠聰明,可以在其他值之前過濾pk?

您絕對應該在查詢中執行此操作。 DBMS足夠聰明,可以識別where子句中的pk字段,實際上,它將在處理之前進行查詢優化和where子句的重新排序。 此屬性是設計使然 ,而基礎數據結構則設計為可以這樣工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM