看到别人写 SQL 会在 where 后面写 1=1,是什么意思?

2016-09-02 11:46:49 +08:00
 KagamineLenKai2

SELECT * FROM operation_log o
where 1=1
and o.operation_time>='2016/6/1'
and o.operation_time<'2016/7/28'
这个 1=1 好像写不写都没关系哦?

21966 次点击
所在节点    MySQL
77 条回复
ytmsdy
2016-09-02 15:21:35 +08:00
为了拼 sql 的时候方便一点,不用判断是否为第一个条件。
后面的条件,直接加 and 就可以了
hubertZheng
2016-09-02 15:25:59 +08:00
同拼接 sql
caixiexin
2016-09-02 15:30:27 +08:00
@Infernalzero 讲真,现在用 mybatis 有时候还会这么写 = =|| ,对 orm 老是有种本能的排斥
caixiexin
2016-09-02 15:31:44 +08:00
@yueyoum 为什么会 low 呢,某些场景下这么写可读性挺好的,也没有性能问题= =
FrankFang128
2016-09-02 15:33:22 +08:00
少一个 if
gangsta
2016-09-02 15:37:05 +08:00
zuotech
2016-09-02 15:37:45 +08:00
一般用于条件的拼接, 在 mysql 里可以写成 where 1 , oracle 才需要 where 1=1 这么 low 的写法...哈哈
riverphoenix
2016-09-02 15:44:02 +08:00
当初公司的 orm 也是这么写的,然后就被人注入了
dong3580
2016-09-02 15:44:58 +08:00
@zuotech
MSSQL 也是 where 1=1 ,顺便问一下,哪儿 low 了?
zuotech
2016-09-02 16:00:29 +08:00
@dong3580 开个玩笑, 因为非要写个表达式 , 如果别人写个 where 123 = 123 ,你说行不行, 当然行, 就是感觉上很 low
dong3580
2016-09-02 16:01:26 +08:00
@zuotech
哈哈,笑点一下变低了。。。
jy01264313
2016-09-02 17:01:54 +08:00
完全有点不知所措
mfu
2016-09-02 17:16:42 +08:00
一般直接写个 where 1 and XXX...
yueyoum
2016-09-02 17:20:27 +08:00
@caixiexin

别总是把性能挂在嘴上, 我说 low 指的是 拼接完全不需要 where 1 = 1 啊, 这样 LZ 就不会有这样的疑问了
wyntergreg
2016-09-02 17:20:50 +08:00
@yueyoum 有的企业级报表的一条 sql 就 100 多行,各种联表各种嵌套,你不懒你 orm 搞一搞。你不 low 你搞一种比拼接字符串或者字符串匹配效率更高的方式出来。
gdtv
2016-09-02 17:21:45 +08:00
@riverphoenix 这个写法和注入没有任何关系
yueyoum
2016-09-02 17:21:50 +08:00
@linescape ORM 确实在 处理复杂查询, 写出来的 代码 比 raw sql 还要复杂。

ORM 为啥 拼接的 SQL 就没有 where 1 =1 这种蛋疼的东西? 你想想
yueyoum
2016-09-02 17:22:26 +08:00
@wyntergreg 见 LS
wyntergreg
2016-09-02 17:22:47 +08:00
@yueyoum oracle 你不写 1=1 你试试
zhs227
2016-09-02 17:22:56 +08:00
很早很早以前,在某些数据库使用不带条件的 delete 时不会返回删除记录数,就会有人给加上一个 where 1=1 ,这样会返回 affected rows 。至于 select 中的 1=1 的话,应该就是纯粹的方便串拼接吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX