我正在学习Mysql
但是在下面的例子之后我感到很困惑:
select * from `users` where username = 'admin' or true;
这里它返回了用户表中的所有行!
(username = 'admin' or true ) 应该是 true 吗?所以哪里是真的
但在这个例子中:
select * from `users` where username = 'admin' and true;
它返回一行(其中用户名 = 'admin')
但是 (username = 'admin' and true) 也应该是真的!
那么有什么区别呢?
最佳答案
-- this is always true
WHERE 1
-- this is only true for rows where the username is admin
WHERE username = 'admin'
现在检查这个truth table :
x y | x and y | x or y
-----------------------
F F | F | F
F T | F | T
T F | F | T
T T | T | T
https://en.wikipedia.org/wiki/Boolean_algebra
如果你采取
x
用于WHERE username = 'admin'
和y
代表WHERE 1
你应该明白结果。
关于mysql - OR 和 AND 与 mysql 中 where 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35041654/