在進行沒有WHERE約束的MySQL查詢時,大多數人在查詢中使用WHERE 1。但是,省略WHERE 1不會影響查詢。兩者有什麼不同?被認爲是最佳做法嗎?WHERE 1在MySQL查詢中的重要性
19
A
回答
47
我不認爲這是最佳實踐的問題,但人們有時使用它來使構建動態查詢變得更容易一些。
string sql = "SELECT * FROM mytable WHERE 1 ";
if (somecondition) {
sql += "AND somefield = somevalue ";
}
if (someothercondition) {
sql += "AND someotherfield = someothervalue ";
}
... etc
沒有WHERE 1
在那裏我需要在每個if
塊我是否需要把在WHERE
或AND
檢查。
11
8
對於自動化代碼生成器和其他SQL語句操縱器來說,這是一個較少的情況。通過使用where 1
(或where 1 = 1
)啓動過濾部分,您的自動代碼生成器可以添加帶有and
前綴的新過濾器。
否則你會落得像代碼:
query = "select * from tbl"
sep = " where "
foreach clause in all_clauses:
query = query + sep + clause
sep = "and "
這是不一樣乾淨:
query = "select * from tbl where 1 = 1"
foreach clause in all_clauses:
query = query + " and " + clause
應該讓非常差別不大什麼像樣的DBMS因爲執行引擎應該在執行查詢之前去除這些子句。
這是否是最佳實踐取決於您是否希望在查詢生成器中使用「更乾淨」的代碼,或者您是否希望公司的數據庫管理員試圖追蹤您並使用此類工具來擊敗您愚蠢的從句:-)當然,如果你使用的是MySQL,你可能會爲的DBA,所以這可能不成問題。
相關問題
- 1. 我怎麼能重複MongoDB中MySQL的WHERE 1查詢?
- 2. MySQL Where Where查詢
- 3. MySQL查詢需要在where子句
- 4. Mysql的WHERE查詢
- 5. 重要性?在ES查詢
- 6. MySQL查詢需要1天以上
- 7. 子查詢在MySQL中返回多於1行where子句
- 8. MySQL查詢在where子句
- 9. WHERE和AND在MySQL查詢
- 10. MySQL,Short WHERE查詢
- 11. MySQL strip'on where查詢
- 12. 刪除和更新限制重要性在mysql查詢
- 13. MySQL查詢值+ 1
- 14. CakePHP的MySQL查詢與WHERE
- 15. MySQL查詢的WHERE與和
- 16. nodejs mysql multiple where查詢的
- 17. MySql:需要改進查詢的性能
- 18. 3查詢在1交易mysql中
- 19. 在MYSQL查詢中衝突where子句
- 20. 在MySQL查詢中添加WHERE子句
- 21. 在Mysql查詢中具體where子句
- 22. if-else在mysql中查詢where子句
- 23. MySQL查詢中表名反引號的重要性
- 24. MySQL:爲什麼在這個查詢中「1 + 1」被當作「1」?
- 25. Mysql搜索查詢順序的重要性
- 26. Where子句中MySQL查詢中出現重複的更新
- 27. Mysql性能:1查詢3個表或2個查詢?
- 28. MySQL 2查詢合併爲1查詢
- 29. 刪除與MySQL中的WHERE EXISTS查詢
- 30. mysql查詢where子句中的問題
+1你比我快:P – Diadistis 2009-12-31 02:35:54
@Eric在WHERE 1和WHERE 1 = 1之間有速度差嗎? – fire 2011-09-26 15:41:45
@fire - 不知道,你需要測試才能發現,但我會認爲任何體面的優化器都會將這兩個表達式都視爲與查詢無關。 – 2011-09-27 18:43:12