2012-03-11 104 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()