MySQL “Or” Condition

后端 未结 5 415
攒了一身酷
攒了一身酷 2020-12-29 21:38

Check out this MySQL Query and then I\'ll show you what I really want it to do...

mysql_query(\"
SELECT * FROM Drinks WHERE
    email=\'$Email\'         


        
相关标签:
5条回答
  • 2020-12-29 21:56

    Use brackets to group the OR statements.

    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')");
    

    You can also use 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')");
    
    0 讨论(0)
  • 2020-12-29 21:56

    Your question is about the operator precedences in mysql and Alex has shown you how to "override" the precedence with parentheses.

    But on a side note, if your column date is of the type Date you can use MySQL's date and time functions to fetch the records of the last seven days, like e.g.

    SELECT
      *
    FROM
      Drinks
    WHERE
      email='$Email'
      AND date >= Now()-Interval 7 day
    

    (or maybe Curdate() instead of Now())

    0 讨论(0)
  • 2020-12-29 22:08

    Use brackets:

    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'
        )
    ");
    

    But you should alsos have a look at the IN operator. So you can say ´date IN ('$date1','$date2',...)`

    But if you have always a set of consecutive days why don't you do the following for the date part

    date <= $Date_Today AND date >= $Date_SevenDaysAgo
    
    0 讨论(0)
  • 2020-12-29 22:10

    Wrap your AND logic in parenthesis, like this:

    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')");
    
    0 讨论(0)
  • 2020-12-29 22:15

    try this

    mysql_query("
    SELECT * FROM Drinks WHERE
        email='$Email'
        AND date='$Date_Today'
        OR date='$Date_Yesterday', '$Date_TwoDaysAgo', '$Date_ThreeDaysAgo', '$Date_FourDaysAgo', '$Date_FiveDaysAgo', '$Date_SixDaysAgo', '$Date_SevenDaysAgo'"     
       );
    

    my be like this

     OR date='$Date_Yesterday' oR '$Date_TwoDaysAgo'.........
    
    0 讨论(0)
提交回复
热议问题