具有多个 WHERE 的 MYSQL 查询

标签 mysql sql

我有一个非常大的数据库。我需要运行查询以通过电子邮件和 load_date(日期/时间戳字段)进行搜索。我需要从 3 个不同的日期提取 3 个电子邮件用户。

所以我需要一个表来显示电子邮件(电子邮件字段):

email1@host.com
nextemail@site.com
finalemail.yosite.com

对于日期(load_date 字段):

2014-08-01
2014-08-06
2014-08-09

如果我运行这个:

SELECT email, load_date
  FROM table1
  WHERE email = 'email1@host.com' or email = 'nextemail@site.com' or email = 'finalemail.yosite.com

结果正确。

如果我运行:

SELECT email, load_date
  FROM table1
  WHERE load_date LIKE "2014-08-01%" or load_date LIKE "2014-08-06%" or load_date LIKE "2014-08-09%"

结果正确。

但是如果我把它们结合起来:

SELECT email, load_date
  FROM table1
  WHERE email = 'email1@host.com' or email = 'nextemail@site.com' or email = 'finalemail.yosite.com'
  and
   load_date LIKE "2014-08-01%" or load_date LIKE "2014-08-6%" or load_date LIKE "2014-08-09%"

我得到了一切!?

我做错了什么??

最佳答案

AND 函数的优先级高于 OR 函数。您需要将您的 OR 封装在括号中。

SELECT email, load_date
FROM table1
WHERE (email = 'email1@host.com' or email = 'nextemail@site.com' or email = 'finalemail.yosite.com')
and (load_date LIKE "2014-08-01%" or load_date LIKE "2014-08-6%" or load_date LIKE "2014-08-09%")

关于具有多个 WHERE 的 MYSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314109/

相关文章:

mysql - 哎呀!扫描了 40 亿行。这是正确的吗?

sql - 尝试插入 SQL Azure 数据库表记录时出错

javascript - 不使用 javascript 从输入字段中检索值以进行数据库插入

sql - 在 PostgreSQL 的一行中显示一列的多个值

mysql - SQL 用条件区分列

Mysql多选查询按月显示总结果

mysql - 插入一个表,同时从两个表中选择,彼此没有关系

mysql - SQL - 如何在与另一个表比较并再次比较返回值后返回多个值?

mysql - 如何对 MySQL 中的列求和

php - 我应该如何在 php 中使用 array_intersect 函数而不是 MySQL 交集?