看看这个MySQL
查询,然后我将向您展示我真正希望它做什么...
mysql_query("
SELECT * FROM Drinks WHERE
email='$Email'
AND date='$Date_Today'
OR date='$Date_Yesterday'
OR date='$Date_TwoDaysAgo'
OR date='$Date_ThreeDaysAgo'
OR date='$Date_FourDaysAgo'
OR date='$Date_FiveDaysAgo'
OR date='$Date_SixDaysAgo'
OR date='$Date_SevenDaysAgo'");
问题是我希望它总是与email匹配。在这种情况下(例如),如果日期等于$Date_SixDaysAgo
,那么即使$Email
不等于email列,它也会从查询中被选中。
因此,简而言之,我希望电子邮件始终等于电子邮件列,如果查询提取的日期等于$Daye_TwoDaysAgo
或$Date_ThreeDaysAgo
等,但不等于电子邮件,则不要提取它。
我想我的查询看起来会像这样,但我很肯定它不会工作。
mysql_query("
SELECT * FROM Drinks WHERE
email='$Email'
AND date='$Date_Today
|| $Date_Yesterday
|| $Date_TwoDaysAgo
|| $Date_ThreeDaysAgo
|| $Date_FourDaysAgo
|| $Date_FiveDaysAgo
|| $Date_SixDaysAgo
|| $Date_SevenDaysAgo'");
5条答案
按热度按时间l3zydbqr1#
使用括号对OR语句进行分组。
您也可以使用IN
8e2ybdfx2#
使用括号:
但是你也应该看一下
IN
运算符,所以你可以说date IN('$date1','$date2',...')但是,如果您总是有一组连续的日期,为什么不对日期部分执行以下操作
f2uvfpb93#
你的问题是关于mysql中的operator precedences和Alex has shown you如何用括号“覆盖”优先级。
但顺便提一下,如果列
date
的类型是Date
,则可以使用MySQL's date and time functions来获取最近七天的记录,例如:(or可能是Curdate()而不是Now())
kmynzznz4#
将AND逻辑括在括号中,如下所示:
zujrkrfu5#
试试这个
我是这样的