点击上方 "编程技术圈"关注, 星标或置顶一起成长
后台回复“大礼包”有惊喜礼包!
每日英文
Real strong men are not those without tears,but those running in tears.
真正的强者,不是没有眼泪的人,而是含着眼泪奔跑的人。
每日掏心话
没有人是完美的,社会不可能完美,因为社会是由所有不完美的人组成在一起,你的职责就是比别人多勤奋一点、多努力一点、多有一点理想,世界才会好起来。
责编:乐乐 | 来自:cloud.tencent.com/developer/article/1475146
编程技术圈(ID:study_tech)第 1141 次推文 图源:百度
往日回顾:CTO 说了,如果发现谁用 kill -9 关闭程序就开除
正文
这段代码应该是由程序(例如Java)中生成的,where条件中 1=1 之后的条件是通过 if 块动态变化的。例如:
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 关键字后面的第一个词直接就是 “and”而导致语法错误。
在公众号顶级架构师后台回复“架构整洁”,获取一份惊喜礼包。
动态SQL中连接AND条件
where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。
where后面总要有语句,加上了1=1后就可以保证语法不会出错!
select * from table where 1=1
因为table中根本就没有名称为1的字段,所以该SQL等效于select * from table,
这个SQL语句很明显是全表扫描,需要大量的IO操作,数据量越大越慢,
建议查询时增加必输项,即where 1=1后面追加一些常用的必选条件,并且将这些必选条件建立适当的索引,效率会大大提高
拷贝表
create table table_name as select * from Source_table where 1=1;
复制表结构
create table table_name as select * from Source_table where 1 <> 1;
PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
猜你还想看
有人靠"抢茅台"月入百万,脚本曝光,开源可用!网友:太强了~
告赢了!程序员拒绝春节带电脑回家工作被开除,判决获赔19.4万!
BAT等大厂Java面试经验总结
别找了,想获取 Java大厂面试题学习资料
扫下方二维码回复「手册」就好了
嘿,你在看吗?