SQL 語句中 where 條件后 寫上 1=1 是什么意思?
來源:cloud.tencent.com/developer/article/1475146
這段代碼應(yīng)該是由程序(例如Java)中生成的,where條件中 1=1 之后的條件是通過 if 塊動態(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)鍵字后面的第一個詞直接就是 “and”而導(dǎo)致語法錯誤。
動態(tài)SQL中連接AND條件
where 1=1 是為了避免where 關(guān)鍵字后面的第一個詞直接就是 “and”而導(dǎo)致語法錯誤。
where后面總要有語句,加上了1=1后就可以保證語法不會出錯!
select?*?from?table?where?1=1
因?yàn)閠able中根本就沒有名稱為1的字段,所以該SQL等效于select * from table,
這個SQL語句很明顯是全表掃描,需要大量的IO操作,數(shù)據(jù)量越大越慢,
建議查詢時增加必輸項(xiàng),即where 1=1后面追加一些常用的必選條件,并且將這些必選條件建立適當(dāng)?shù)乃饕?,效率會大大提?/p>
拷貝表
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
所有資料都整理到網(wǎng)盤了,歡迎下載!
...
由于資料太多啦,就不一一列舉了 按照下面的步驟領(lǐng)取吧 領(lǐng)取方式:
長按掃碼,聊天框發(fā)送消息?[java]
長按掃碼關(guān)注
回復(fù)發(fā)消息?java
另外,給大家推薦份來自字節(jié)跳動大佬的算法進(jìn)階指南,據(jù)說有不少小伙伴靠這份指南成功掌握了算法的核心技能,拿到了 BAT offer。希望對大家有幫助。
資料是 70K Star 的《labuladong 的算法小抄》(作者 labuladong)。
先來給你們看看里面具體都有哪些內(nèi)容:
現(xiàn)在這本 PDF 免費(fèi)分享給你,你可以掃描下方二維碼回復(fù)?算法?來領(lǐng)取這本 PDF。 ▲長按二維碼進(jìn)行關(guān)注▲ ▲回復(fù)「算法」,獲取PDF▲
評論
圖片
表情












