年輕人不講武德,where 1=1 是什么鬼?

這段代碼應(yīng)該是由程序(例如Java)中生成的,where條件中 1=1 之后的條件是通過 if 塊動(dòng)態(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)鍵字后面的第一個(gè)詞直接就是 “and”而導(dǎo)致語(yǔ)法錯(cuò)誤。

動(dòng)態(tài)SQL中連接AND條件

where 1=1 是為了避免where 關(guān)鍵字后面的第一個(gè)詞直接就是 “and”而導(dǎo)致語(yǔ)法錯(cuò)誤。

where后面總要有語(yǔ)句,加上了1=1后就可以保證語(yǔ)法不會(huì)出錯(cuò)!

select * from table where 1=1

因?yàn)閠able中根本就沒有名稱為1的字段,所以該SQL等效于select * from table,

這個(gè)SQL語(yǔ)句很明顯是全表掃描,需要大量的IO操作,數(shù)據(jù)量越大越慢,

建議查詢時(shí)增加必輸項(xiàng),即where 1=1后面追加一些常用的必選條件,并且將這些必選條件建立適當(dāng)?shù)乃饕?,效率?huì)大大提高

「拷貝表」

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;

來(lái)源:cloud.tencent.com/developer/article/1475146

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容