A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jibenwujie 高级黑马   /  2014-1-2 11:06  /  1684 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

都知道查询的sql语法 查询是用select语句 例如:
  1. SELECT * FROM T(俺假设的表)
复制代码

但是在很多时候,我见到了一种写法是这样的:
  1. SELECT * FROM T WHERE 1 = 1
复制代码

不知道有没有遇到这样的朋友解释下疑问呢,两者同为查询,有什么不一样

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 神马都是浮云

查看全部评分

5 个回复

倒序浏览
本帖最后由 浮出一个美 于 2014-1-2 11:36 编辑

这是我在工作中遇到的一种情况
拼接SQL字符串时,加一个where1=1方便后面添加查询条件
StringBuilder sb=new StringBuilder("from T where 1=1  ");               
sb.append("and name = 'songfen' ");
这样,及时没有添加查询条件,SQL也是成立的。
楼主妹妹,给分哦

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
FFF + 1 楼主是汉子 ~哈哈~
jibenwujie + 3 神马都是浮云

查看全部评分

回复 使用道具 举报
浮出一个美 发表于 2014-1-2 11:34
这是我在工作中遇到的一种情况
拼接SQL字符串时,加一个where1=1方便后面添加查询条件
StringBuilder sb=ne ...

噢喔 ,是这样啊,原来要工作了才会明白呀
回复 使用道具 举报
浮出一个美 发表于 2014-1-2 11:34
这是我在工作中遇到的一种情况
拼接SQL字符串时,加一个where1=1方便后面添加查询条件
StringBuilder sb=ne ...

还没说清楚,不充点,补充也要给分的哟。
就是如果没有where 1=1,
你写第一个查询条件的时候,没有and,而后面的查询条件有and
还要判断一下,麻烦
如果有where 1=1,
后面的查询条件就只管and就行了
回复 使用道具 举报
说白了两者间区别在于后者有一个where语句
where子句是设置查询条件,过滤掉不需要的数据行
比如 SELECT * FROM student WHERE name = zhangsan 就是在学生表student查询名字为张三的学生 name是表中字段名 zhangsan是表中字段值
如果没有WHERE name = zhangsan这句那就是查询学生表student中所有的学生

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励分+1

查看全部评分

回复 使用道具 举报
where 1=1 这是sql 注入问题 很难讲清 百度一下把
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马