這段代碼應(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ù)?a target="_blank">索引,效率會(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;
-
SQL
+關(guān)注
關(guān)注
1文章
783瀏覽量
45441 -
代碼
+關(guān)注
關(guān)注
30文章
4906瀏覽量
71164
發(fā)布評(píng)論請(qǐng)先 登錄
不用編程序無(wú)需聯(lián)外網(wǎng),將Rockwell羅克韋爾(AB)PLC的標(biāo)簽數(shù)據(jù)存入SQL數(shù)據(jù)庫(kù)
基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)
PLC通過(guò)智能網(wǎng)關(guān)實(shí)現(xiàn)HTTP協(xié)議通訊,先取得token后再提交獲取JSON格式的數(shù)據(jù)文件
大促數(shù)據(jù)庫(kù)壓力激增,如何一眼定位 SQL 執(zhí)行來(lái)源?

詳解TIA Portal SCL編程語(yǔ)言中的IF語(yǔ)句

如何一眼定位SQL的代碼來(lái)源:一款SQL染色標(biāo)記的簡(jiǎn)易MyBatis插件

淺談SQL優(yōu)化小技巧
如何使用SQL進(jìn)行數(shù)據(jù)分析
SQL錯(cuò)誤代碼及解決方案
常用SQL函數(shù)及其用法
SQL與NoSQL的區(qū)別
技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:掌握C語(yǔ)言條件判斷,從if到switch的應(yīng)用

評(píng)論