我有一个非常大的数据库。我需要运行查询以通过电子邮件和 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/