我有某些条件的查询:

SELECT...
FROM ...
WHERE unit = ".$unitID."
AND DATE(eventDate) = '".$myDate."'
AND IF ('".$myDate."' = '".$currentDate ."',
        eventTime < '".$currentTime ."',
        true)


基本上,它会查找特定日期的详细信息,如果日期恰好是今天,请确保事件的时间已经过去。

我需要添加其他参数。如果事件是“已取消”或“重新安排”的,那么即使是今天,时间还没有过去,也要获取这些结果。

AND IF (eventStatus = 'cancelled' OR offers_sent.rescheduled= 'rescheduled')


很难将两者结合起来。

SELECT...
FROM ...
WHERE unit = ".$unitID."
AND DATE(eventDate) = '".$myDate."'
AND IF (
        ('".$myDate."' = '".$currentDate ."',
        eventTime < '".$currentTime ."',
        true)
        OR
        (eventStatus = 'cancelled' OR offers_sent.rescheduled= 'rescheduled')
)

最佳答案

简单的解决方案:

SELECT...
FROM ...
WHERE unit = ".$unitID."
AND DATE(eventDate) = '".$myDate."'
AND (IF ('".$myDate."' = '".$currentDate ."',
        eventTime < '".$currentTime ."',
        true)
    OR eventStatus = 'cancelled' OR offers_sent.rescheduled= 'rescheduled')


但是,if()函数中的条件可以在调用应用程序(php代码?)中进行,并且基于结果,可以简化发送到数据库的sql。

关于mysql - 使用其他参数修改查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33323956/

10-12 05:16