SELECT * FROM table WHERE 1

+1 投票
最新提问 3月 3 分类:数据库 | 用户: yanxue (270 分)

我一直很好奇,为什么这样写SQL语句,这几种写法有什么区别?

  1. SELECT * FROM table

  2. SELECT * FROM table WHERE 1

  3. SELECT * FROM table WHERE 1=1

1个回答

0 投票
最新回答 3月 3 用户: 点心 (260 分)

2和3在MySQL中是一样的,执行后的结果与1也是一样的。

“where 1”不是标准的写法,可能无法在其他数据库系统中工作。

大家增加where 1或where 1=1是为了动态生成sql语句时方便构造(添加或删除部分条件),即

SELECT * FROM table WHERE 1=1
--AND Column1 = 'Value1'
AND Column2 = 'Value2'

而且MySQL优化器在编译时将删除WHERE子句中的常量条件,所以执行性能没有差别。通常在构造SQL语句时使用第三种写法。

欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
...