与mysql中逻辑运算符的使用混淆

rnmwe5a2  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(333)

我有一张table叫 users 具体如下:

现在,当我以以下方式运行查询时:

select * from users where name='admin1' AND 1;

我只得到 admin1 记录如下:

而查询为:

select * from users where name='admin1' OR 1;

我得到如下所示的所有记录作为输出:

我在试图理解为什么会发生这种事。如果我们讨论的是逻辑表达式的求值,那么上面的两个查询的求值结果都是1
1和1
以及
1或1
为什么会有这种差别呢?或者是我遗漏了什么基本的东西?

g0czyy6m

g0czyy6m1#

很好用。第一个查询必须同时满足这两个条件,因此名称必须为“admin1”,并且1始终为true。这就是为什么只得到一行名为admin1的结果
在第二个查询中,只有一个条件必须满足,这就是为什么从表中获得所有结果的原因

vawmfj5a

vawmfj5a2#

只是为了补充@danopluana的答案,我认为这是正确的。
我强烈反对用这种方式编写查询,因为它们不符合sql标准,而且很难阅读。如果您对它们的含义感到困惑,我打赌下一个在您之后阅读它进行维护的开发人员也会感到困惑。这就产生了真正的生产缺陷,给你的客户带来了真正的损失。
只需编写正常的布尔条件,就可以让每个人的生活更轻松。

相关问题