2011-11-12 83 views
1

我在值列表中輸出。基於日期和限制標識值

Name Date of Entry 
C1 - 1/1/2011 
C3 - 3/3/2011 
C2 - 2/2/2011  
C4 - 4/4/2011 
C5 - 5/5/2011 

對於說上面的列表數爲5,我有帽數爲2,所以任何「C的大於2應該被禁用,並且打算將根據入境之日起被禁止的銫。

即。根據日期取出較舊的Cs(首次進入系統),在這種情況下應啓用C1和C2,並禁用C3,C4 & C5。

select * from table order by date; =>這給了我C1,C2,C3,C4,C5。

select * from table order by date limit 2; =>這給了我很好的C1和C2,但是我怎麼知道C3,C4,C5需要被禁用。

我確實想識別C3,C4和C5需要禁用。

是否可以在單個查詢中執行?任何MySQL開發人員都有幫助?

謝謝。

+0

你只是想選擇需要被禁用,還是要執行表上的更新行的名字嗎? –

+0

沒有更新,只需要知道那些被禁用的。 – Sharpeye500

+0

日期保證是唯一的嗎?如果有三個日期「2011/1/1」,會發生什麼?隨機刪除其中的兩個? –

回答

2

假設日期是唯一的,試試這個:

SELECT 
    name, 
    date, 
    date > 
    (
     SELECT MIN(date) 
     FROM your_table 
     WHERE date > (SELECT MIN(date) FROM your_table) 
    ) AS disabled 
FROM your_table 
ORDER BY date 
+0

錯誤代碼:1235 此版本的mysql尚不支持'LIMIT&IN/ALL/ANY/SOME子查詢'我正在使用5.2,我不認爲這與版本#有關,可能與查詢有關句法。 – Sharpeye500

+0

@ Sharpeye500:對不起,我以前沒有測試過。試試我更新的答案。我測試了它,它似乎工作。 –

+0

這非常接近,但它沒有給我正確的答案。 1/1/2011 2011年2月2日2011/3/3 2011年4月4日2011/5/5 如果分鐘日期是1/1/2011,我需要取頂部2即。 2011年1月1日和2011年2月2日已啓用並需要取消 2011年3月3日4/4/2011,5/5/2011爲禁用。即。通過選擇if(當前行的日期>分鐘(日期),1,0)從表中標記1和0的那些條目;即。結合min(日期)和比較日期值,我想我得到的邏輯,不知道的語法。 – Sharpeye500