2012-03-11 106 views
1

我正在使用MySql 5.5。让我们先看看我的表的样本开始:需要帮助公式化SQL查询

pickupid pickuplocation  Date1  Date2  Date3  Date4 
1   Collingwood   1328079600 1330585200 1333260000 1335852000 
2   Varsity    1328079600 1330585200 1333260000 1335852000 
3   Canmore    1328079600 1330585200 1333260000 1335852000 
4   Westbrook   1328079600 1330585200 1333260000 1335852000 

我需要一个查询将仅选择是在未来这些日期。如果日期过去,查询必须跳过它。我曾尝试使用选择有,或者,在哪里& AND。我的查询失败,因为如果其中一个日期恰好在过去,那么整个查询返回零结果。是的,我知道如果我用另一种方式来定位桌子,即在列中的位置和行中的日期,它可以使它更容易 - 我已经尝试过了,但是由于我的HTML报告必须适应其他问题超过50个地点,但只有4个日期。

许多非常感谢您的帮助!

+3

你介意共享你迄今试过的查询和输出吗? – 2012-03-11 06:13:51

+0

Pseudo ... SELECT * FROM table WHERE date1> now()或date 2> now()等...? – 2012-03-11 06:15:32

+3

您必须提供您想要的输出示例。您没有提供足够的信息,您提供的信息可以通过几种方式进行解释:(1)将来有任何日期的所有行; (2)相同,但过去的日期返回null; (3)将来所有日期的所有行 – 2012-03-11 06:20:44

回答

2

由于关于您要获取的内容没有太多细节,因此我只是猜测,但下面的查询将返回所有结果,其中一个日期是将来的,只有日期将来有日期的列将包含数据,其他数据将设置为NULL。

然后,您可以排除在处理空日期...

这是你要什么?

SELECT 
    pickupid, 
    pickuplocation, 
    IF(Date1 > NOW(),Date1,NULL) AS Date1, 
    IF(Date2 > NOW(),Date2,NULL) AS Date2, 
    IF(Date3 > NOW(),Date3,NULL) AS Date3, 
    IF(Date4 > NOW(),Date4,NULL) AS Date4 
FROM 
    locations_table 
WHERE 
    Date1 > NOW() 
    OR Date2 > NOW() 
    OR Date3 > NOW() 
    OR Date4 > NOW()