SQL 語(yǔ)句中 where 條件后 寫上 1=1 是什么意思!
點(diǎn)擊上方藍(lán)色“小哈學(xué)Java”,選擇“設(shè)為星標(biāo)”
回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!
來源:cloud.tencent.com/developer/article/1475146
這段代碼應(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;
END
有熱門推薦??
1.?慌了 !CTO 點(diǎn)名要搞個(gè)灰度發(fā)布系統(tǒng) !
3.?編程高手是如何練成的?
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)



