2011-06-20 190 views
1

我搜索並得到10條記錄作爲result.I有兩個下拉框。一個將有月份作爲價值,另一個將有年份作爲價值。這些10條記錄有同一年和5月有jan和其他五個月的月份爲feb。mysql選擇查詢

當用戶點擊feb然後五個id將被傳遞給我的查詢,但我需要拉下來的年輕document.2文檔被插入feb 5和其他10 10 feb和剩餘一個25feb.i需要拉這25日feb文件。

如何使用select語句選擇這個?

+0

將sql添加到標籤。 – OverLex

+0

請用適當的例子詳細說明你的問題 –

+0

@Kishan Gajjar:我已經解釋得非常清楚了。你在這裏不明白。 –

回答

1

想必你有你的數據庫中的一些date_inserted列 - 如果是這樣,你可以添加

ORDER BY date_inserted DESC LIMIT 1 

這將使他們在反向日期順序,並LIMIT 1將導致它僅返回1個結果

2

您可以從數據庫中提取的日期和時間,並顯示給用戶他們這樣他就可以選擇正確的文件,否則,你可以解決:

SELECT * 
FROM TABLE 
WHERE month = 'Feb' 
    AND year = 2011 
    AND day = (select max(day) from table where month = 'Feb' and year = 2011) 

但我假設了很多資料在這裏,這些相關信息應該幫助我幫助你:

  • 表的名稱
  • 字段和字段類型
  • 你有一個方法來保持正確的軌道倍tamps和日期?
+0

如果他單獨選擇月份,我將如何顯示他。 –

+0

這是一個觀點問題:你如何向不知道想要什麼的人展示一些東西? (哲學:D) 你可以總是假設一個默認的年份:我不知道,2011年或只是使用max(年),因爲你用max(天),正如我告訴過你的,這將有助於瞭解你的表格結構和/或計時字段。 – OverLex

+0

我得到o/p作爲四條記錄,但對於這個查詢,它應該只顯示我的最大日期記錄。我有四列日期月份年,這三個合併yyyy-mm-dd。 –

1

這應該工作:

SELECT * 
FROM `table` 
WHERE MONTH(`insert_date`) = 2 
AND YEAR(`insert_date`) = 2011 
ORDER BY `insert_date` DESC 
LIMIT 1; 

注:以上假設你在表F有場或存儲創建/插入文檔的日期。請將上述查詢中的insert_datetable替換爲各自的列名和表名。

EDITED後此評論「日期存儲日期,月份商店年月店一年」爲

SELECT * 
FROM `table` 
WHERE `month` = 2 
AND `year` = 2011 
ORDER BY `year` DESC, `month` DESC, `date` DESC 
LIMIT 1; 

我認爲在month列要存儲的數字,1月,2 2月等。然而,如果你存儲的3個字母的月份名,然後,而不是「`month` = 2」請使用此:

MONTH(STR_TO_DATE(`month`, '%b')) = 2 

希望這應該工作。

+0

我有日期和年份分開,那麼查詢將如何到來 –

+0

@ user22115:日期的列僅存儲日期還是日期月?我認爲它應該很簡單。假設一個存儲日期月份(例如21/06)和另一個只存在一年(例如2011),那麼查詢可能類似於:SELECT *,STR_TO_DATE(CONCAT(\'insert_datemonth \',' /',\'insert_year \'),'%d /%m /%Y')作爲\'ins_date \'WHERE ... ORDER BY \'ins_date \'DESC ...'。希望它有幫助 – Abhay

+0

Nope.date商店日期,月商店月和年商店年。 –