這段代碼應(yīng)該是由程序(例如Java)中生成的惜论,where條件中 1=1 之后的條件是通過(guò) if 塊動(dòng)態(tài)變化的许赃。例如:
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)有名稱(chēng)為1的字段,所以該SQL等效于select * from table乾巧,
這個(gè)SQL語(yǔ)句很明顯是全表掃描句喜,需要大量的IO操作预愤,數(shù)據(jù)量越大越慢,
建議查詢(xún)時(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;