这是我的查询:
SELECT * FROM addresses
WHERE (addresses.name LIKE '%Jonathan%' OR addresses.domain LIKE '%Jonathan%')
AND (addresses.name LIKE '%gmail' OR addresses.domain LIKE '%gmail%')
AND
语句用于 WHERE
子句,假设 AND
子句之后的部分没有命中任何内容,结果是否会为空,因为它被添加为 AND
语句?在这个例子中,我试图捕获所有地址为 Jonathan 的人,以及所有 Jonathan 的地址为 gmail 的人。但是,如果让我们在这个例子中说 gmail 不存在任何名为 Jonathan 的人,我想要所有 Jonathan 结果(这就是为什么我认为使用 AND 语句不起作用)我可能没有正确措辞。
谢谢
最佳答案
您对不同的字段使用相同的比较可能会导致逻辑错误,请看这个例子
CREATE TABLE addresses
(
id int auto_increment primary key,
name varchar(20),
domain varchar(30)
);
INSERT INTO addresses
(name, domain)
VALUES
('Jonathan', 'Jonathan@gmail.com'),
('Jonathan', 'Xavier@gmail.com'),
('Jonathan', 'Xavier@hotmail.com'),
('Jonathan', 'Jonathan@hotmail.com'),
('Xavier', 'Jonathan@hotmail.com')
;
使用您的查询,它将返回:
1 Jonathan Jonathan@gmail.com
2 Jonathan Xavier@gmail.com
AND 运算符指定必须满足这两个条件。
看看这个demo , 它将帮助您了解 AND 运算符的工作原理
关于mysql - SQL 多重 AND 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16877270/