在编写where条件时,经常看到-1,0,1这些常量出现,这里简单做一个总结
1.where 1=1
(1)就是为了拼接语句方便,并没有其余含义!
(2)如果不加这个 1=1 ,那么在拼 sql 的时候要判断拼上去的第一个条件是不带 and 的,然而很多查询都是多条件
组合查询的,并不知道哪一个条件会拼在第一个上,所以干脆把第一个条件写成 sql 认为的"true",
其他所有条件都是 and拼接
(3)等价于:select * from table;
2.where id=-1
(1)只是看表中的字段而已,为了查询速度快,所以特地加了个不成立的条件,没有表数据返回结果
(2)-1一般都是特殊值,一般表示NULL等特殊的标记
3.where (id=-1 or -1=-1)
(1)因为是or的关系,所以等价于 :select * from table;
4.where 1=-1
(1)因为1=-1始终不成立,等价于2
(2)也相当于只送查看表中字段而已,没有表数据返回结果
5.where (id=1 or 1=-1)
(1)因为是or的关系,相当于:当id=1的数据不存在时,只显示表字段信息
当id=1的数据存在时,就返回条件查询结果
(2)当id=1的数据存在时,等价于:select * form where id=1;