MySQL"或"条件

Joe*_*Joe 25 php mysql select conditional-statements

查看此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'");
Run Code Online (Sandbox Code Playgroud)

它的问题是我希望它始终匹配电子邮件.在这种情况下(例如)如果日期等于$Date_SixDaysAgo那么即使$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'");
Run Code Online (Sandbox Code Playgroud)

Max*_*sky 60

使用括号对OR语句进行分组.

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')");
Run Code Online (Sandbox Code Playgroud)

您也可以使用IN

mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND date IN ('$Date_Today','$Date_Yesterday','$Date_TwoDaysAgo','$Date_ThreeDaysAgo','$Date_FourDaysAgo','$Date_FiveDaysAgo','$Date_SixDaysAgo','$Date_SevenDaysAgo')");
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 10

使用括号:

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'
    )
");
Run Code Online (Sandbox Code Playgroud)

但你应该看看IN运营商.所以你可以说'date IN('$ date1','$ date2',...)`

但是,如果您总是连续几天,为什么不对日期部分执行以下操作

date <= $Date_Today AND date >= $Date_SevenDaysAgo
Run Code Online (Sandbox Code Playgroud)

  • 或者可能使用BETWEEN运算符. (2认同)