2014-10-12 4 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_date с текущей датой при группировке по p_name. Если текущая дата «2014-10-11», мне нужна запись 4 для группы продуктов «А», потому что запись 4 соответствует текущей дате и записи 2 для группы продуктов «В», поскольку ни одно из p_имя «В» не соответствует текущей дате. Запрос для проверки p_date с текущей датой при группировке по p_name. мне нужно получить запись из группы, которая соответствует текущей дате, если нет записи, соответствующей текущей дате, а затем записи минимальной даты.

+0

я думаю, что вы хотите, если заявление в MySQL .. –

+0

да. Как и утверждение. – galeb

+1

Fot group 'B', почему запись 2 выбрана не другой? каково это правило в этом случае? минимальная дата или что? –

ответ

0

Может быть, вы можете иметь чек с Having пунктом MySQL .. и изменить запрос на несколько, как ...

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

, если какая-либо группа не соответствует текущей дате, тогда данные группы не будут получены. – galeb

+0

Мне нужно получить запись из группы, которая соответствует текущей дате, если нет записи, соответствующей текущей дате, а затем записи минимальной даты. – galeb

+0

В таком случае вам нужно будет написать 2 запроса ... один для проверки с CURDATE() ... и если это не возвращает никаких данных, тогда еще один запрос для даты min ... –

Смежные вопросы