sql中where 1=1

爲什麼要用where 1=1?

之前一直不太明白,sql語句裏爲什麼要寫where 1=1

提升某種執行效率?

其實,1=1 是永恆成立的,意思無條件的,也就是說在SQL語句中有沒有這個1=1都可以。

這個1=1常用於應用程序根據用戶選擇項的不同拼湊where條件時用的。

如:web界面查詢用戶的信息,where默認爲1=1,這樣用戶即使不選擇任何條件,sql查詢也不會出錯。如果用戶選擇了姓名,那麼where變成了where 1=1 and 姓名='用戶輸入的姓名',如果還選擇了其他的條件,就不斷在where 條件後追加 and語句就行了。

如果不用1=1的話,每加一個條件,都要判斷前面有沒有where 條件,如果沒有就寫where ...,有就寫and語句,因此此時用1=1可以簡化了應用程序的複雜度。

下面例子將有助於理解有關概念:
1) select * from t1 where 1=1;
-- 實際等效於select * from t1 where true;
-- 語句將返回t1中所有的記錄行

2) select * from t1 where 1<>1;
-- 實際等效於 select * from t1 where false;
-- 語句將返回空記錄集

說明,例1)實際上等同於不加任何篩選條件,有些畫蛇添足,where 1=1的實際意義不如where 1<>1來得有用,當我們只需要獲取表的字段(結構)信息,而不需要理會實際保存的記錄時,例2)的寫法將是非常可去取的,因爲系統僅會讀取結構信息,而不會將具體的表記錄讀入內存中,這無疑節省了系統開銷。

發佈了50 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章