gpt4 book ai didi

mysql - SQL WHERE 子句逻辑不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:47 26 4
gpt4 key购买 nike

我有一个包含以下信息的数据库表

+----+--------+--------+--------+
| id | status | action | reason |
+----+--------+--------+--------+
| 1 | CN | WAPP | BDEC |
| 2 | CN | DENY | PREF |
| 3 | AP | APPL | MI |
| 4 | AP | MATR | AUTO |
+----+--------+--------+--------+

从该表中选择数据的 MySQL 查询已使用特定过滤器编写,以排除所有匹配 CN-WAPP-BDEC 的记录。

SELECT *
FROM `table`
WHERE (`status` != 'CN' AND `action` != 'WAPP' AND `reason` != 'BDEC');

但是,它只返回记录 3 和 4,记录 #2 也被排除在外。

如果我将查询更改为:

SELECT *
FROM `table`
WHERE CONCAT(`status`, `action`, `reason`) != 'CNWAPPBDEC';

只有这样,我才能得到预期的结果:记录 2、3 和 4。

据我所知,这两个查询应该做完全相同的事情,但它们显然不是,我很困惑为什么会这样。任何见解将不胜感激。

最佳答案

记录 2 被排除,因为 status = CN,这使得第一个条件 status != 'CN' 为 false。

试试这个:

SELECT *
FROM `table`
WHERE (NOT (`status` == 'CN' AND `action` == 'WAPP' AND `reason` == 'BDEC'));

关于mysql - SQL WHERE 子句逻辑不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51793478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com