mysql - SQL 多重 AND 条件

标签 mysql sql

这是我的查询:

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/

相关文章:

sql - 使用非常大的结果集查询 Postgresql

SQL SHOW one more column name FROM operator in

sql - 如何创建一个以多列为轴的 PostgreSQL 数据透视表?

php - 如何更改日期语言?

mysql - sql中的四分位数查询

mysql - SQL查询确实很慢,如何改进?

sql - 将表 PK 值拆分为大致相同大小的范围

php - MySQL WHERE IN() 和 IN()

mysql - 如何在 Laravel 中使用 OUT 参数调用 MySQL 存储过程

mysql - MySQL中的case语句