SQL 語(yǔ)句中 where 條件后 寫(xiě)上 1=1 是什么意思
這段代碼應(yīng)該是由程序(例如Java)中生成的,where條件中 1=1 之后的條件是通過(guò) 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中根本就沒(méi)有名稱為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;

近期熱門(mén)推薦?
1.會(huì)員還多花50元才能看網(wǎng)劇大結(jié)局,人民日?qǐng)?bào)怒批:吃相太難看
2.是時(shí)候扔掉 Postman 了,試試 IntelliJ IDEA 自帶的高能神器!
5.2018年所有精華文章匯總,錯(cuò)過(guò)了血虧!
關(guān)注公眾號(hào),回復(fù)“BAT”
送進(jìn)軍BAT超全優(yōu)質(zhì)視頻資源
點(diǎn)贊是最大的支持?![]()
