2014-10-12 60 views
0

我有一個產品表所示:SQL組組條件

id p_name  s_date 
1  A    2014-10-10 
2  B    2014-10-02 
3  A    2014-10-08 
4  A    2014-10-11 
5  B    2014-10-08 

我需要組上p_name。查詢像

SELECT * FROM product GROUP BY p_name; 

這個查詢檢索記錄1和2,但我需要p_name分組時檢查p_date與當前的日期。如果當前日期爲'2014-10-11',我需要產品組'A'的記錄4,因爲記錄4與當前日期匹配,產品組'B'的記錄2因爲沒有一個p_name'B'與當前日期匹配。在p_name上進行分組時查詢p_date當前日期的查詢。我需要從與當前日期匹配的組中檢索記錄,如果沒有與當前日期匹配的記錄,則記錄最短日期。

+0

我想你想的是,如果在MySQL的聲明... – 2014-10-12 12:58:26

+0

肯定。就像是聲明一樣。 – galeb 2014-10-12 13:00:11

+1

Fot組'B'爲什麼記錄2選擇不是另一個?這種情況下的規則是什麼?最低日期還是什麼? – 2014-10-12 13:06:12

回答

0

也許你可以與MySQL Having子句檢查..並修改查詢到有點像......

SELECT * FROM product GROUP BY p_name HAVING p_date = CURDATE(); 
+0

如果任何組與當前日期不匹配,那麼該組數據將不會檢索。 – galeb 2014-10-13 05:34:46

+0

我需要從與當前日期匹配的組中檢索記錄,如果沒有與當前日期匹配的記錄,則記錄最小日期。 – galeb 2014-10-13 06:28:45

+0

那麼在那種情況下,您將需要編寫2個查詢...一個用於檢查CURDATE()...,如果這不返回數據,然後另一個查詢最短日期... – 2014-10-14 01:59:34