Ven*_*tta 0 mysql where-clause
我正在学习Mysql
但是在下面的例子后我感到困惑:
select * from `users` where username = 'admin' or true;
Run Code Online (Sandbox Code Playgroud)
这里它返回了users表中的所有行!
(username ='admin'或true)应该是真的吗?所以哪里是真的
但在这个例子中:
select * from `users` where username = 'admin' and true;
Run Code Online (Sandbox Code Playgroud)
它返回了一行(其中username ='admin')
但是(用户名='admin'和true)也应该是真的!
那有什么区别?
-- this is always true
WHERE 1
-- this is only true for rows where the username is admin
WHERE username = 'admin'
Run Code Online (Sandbox Code Playgroud)
现在查看这个真值表:
x y | x and y | x or y
-----------------------
F F | F | F
F T | F | T
T F | F | T
T T | T | T
Run Code Online (Sandbox Code Playgroud)
https://en.wikipedia.org/wiki/Boolean_algebra
如果你采取
x为WHERE username = 'admin'和y 对于 WHERE 1你应该了解结果.