爷傲奈我何? 发表于 2020-12-10 20:32:50

MySQL中or问题

1.select * from students where name = '郭镶' or '王美丽';这个只能查出第一个值郭襄
2.select * from students where name = '郭镶' or name = '王美丽';这个可以查出两个值
3.select * from students where name = '张三' or 1 = 1 or '';这个可以查出表中所有值。
那么想问一下,为什么第一个只能查出一个值,第二个却能查出两个值,or不应该是只要任意一个条件为真,就可以查出来吗?那么它不应该是随机取一个满足的条件来查询吗?事实上并不是,比如,第一个例子,它就只能取到郭襄,第二个例子,它能取到两个值。第三个例子,能取到表中所有值。那么这个or是怎么选择符合的条件来查询值的

爷傲奈我何? 发表于 2020-12-10 21:19:35

C:\Users\ATW\Desktop\QQ图片20201210211805.jpg

爷傲奈我何? 发表于 2020-12-10 21:20:45



1.select*fromstudentswherename=' '郭镶'or'王美丽';这个只能查出第一个郭襄

2.select * from students where name = '郭镶' or name = '王美丽' ;这个可以查出两个值

3.select * from students where name = '张三

l =1or'';这个可以查出表中所有值。

那么想问一下,为什么第一个只能查出一个值,第二个却能查出两个值,or不应该是只要任意-个条件为真, 就可以查出来吗?那么它不应该是随机取一个满足的条件来查询吗?事实.上并不是,那么这个or是怎么

1.select★from students where name = '郭镶' or '王美丽';这个只能查出第一个郭襄

解释:这条sq1有2个条件,逻辑运算符是'或’,第一是name='郭镶',第二是,王美丽,

是否为true,

因为第一满足,第二不满足,所以只查出第一name = '郭镶'的结果

'王美丽' ;这个可以查出两个值

第一是name='郭镶’,第二是name='王美丽’, 表里有这两个值所以能查出两个值

3.select★from students where name = '张三’or 1 = 1 or '' ;这个可以查出表中所有值。

解释:这条sq1有3个条件,逻辑运算符是‘或’,第一是name='张三’,第二是1=1,第三是'是否为true,因为1=1是永远满足的,所以查询结果是表中所有值

爷傲奈我何? 发表于 2020-12-10 21:21:31

已搞懂,小伙伴有疑惑的可以看看
页: [1]
查看完整版本: MySQL中or问题