where 1=1 是什么鬼?
來源:cloud.tencent.com/developer/article/1475146
這段代碼應(yīng)該是由程序(例如Java)中生成的,where條件中 1=1 之后的條件是通過 if 塊動態(tài)變化的。例如:
String?sql="select?*?from?table_name?where?1=1";??
??
if(?conditon?1)?{??
??
??sql=sql+"??and??var2=value2";??
??
}??
??
if(conditon?2)?{??
??
??sql=sql+"??and?var3=value3";??
??
}??
?
where 1=1 是為了避免where 關(guān)鍵字后面的第一個詞直接就是 “and”而導致語法錯誤。
動態(tài)SQL中連接AND條件
where 1=1 是為了避免where 關(guān)鍵字后面的第一個詞直接就是 “and”而導致語法錯誤。
where后面總要有語句,加上了1=1后就可以保證語法不會出錯!
select * from table where 1=1
因為table中根本就沒有名稱為1的字段,所以該SQL等效于select * from table,
這個SQL語句很明顯是全表掃描,需要大量的IO操作,數(shù)據(jù)量越大越慢,
建議查詢時增加必輸項,即where 1=1后面追加一些常用的必選條件,并且將這些必選條件建立適當?shù)乃饕?,效率會大大提?/span>
「拷貝表」
create table table_name ?as ?select ?* ?from ?Source_table ?where ?1=1;
「復(fù)制表結(jié)構(gòu)」
create table table_name ?as ?select ?* ?from ?Source_table ?where ?1 <> 1;
最近有讀者想要分布式的項目,還有想要商城的,還有想要springboot,springcloud,k8s等等,這次直接分享幾乎涵蓋了我們java程序員的大部分技術(shù)桟,可以說真的非常全面了。強烈建議大家都上手做一做,而且以后肯定用的上。資料包含高清視頻+課件+源碼……
掃以下二維碼并回復(fù)“99”即可獲取
掃描上方二維碼,關(guān)注并回復(fù)【99】馬上獲取

