2010-08-26 3 views
0

У меня есть таблица со следующим (я отсортирован его по дате):MySQL Выберите запрос - удалить ненужные строки

ID  prodId date 
16  532  2015-08-17 
19  535  2014-08-18 
18  534  2011-08-17 
27  48  2010-08-26 
26  1541 2010-08-25 
25  1541 2010-08-21 
24  1540 2010-08-20 
21  48  2010-08-19 
20  48  2010-08-18 
17  533  2010-08-17 
14  532  2010-08-17 
22  1540 1970-01-01 

Я хочу, чтобы выбрать самый последний PRODID чья дата в прошлом. Моя проблема в том, что я получаю несколько prodId с одинаковым значением (в этом примере 48 и 1541).

Мой запрос в настоящее время:

SELECT * FROM `prods` WHERE (date <= '2010-08-26') order by date DESC 

Как изменить мой запрос, чтобы удалить ненужные строки?

+1

Что это за 'activeUntil'? – Lekensteyn

+0

Человеческая ошибка>. <Должна быть дата –

ответ

2
SELECT * FROM prods p1 
WHERE (date <= '2010-08-26') 
AND Date in (Select Max(Date) from prods p2 where p1.prodId = pr.ProdId 
      and date <= '2010-08-26') 
order by activeUntil DESC 
+0

Это именно то, что я хотел = D Спасибо. –

0

limit 1 добавить в запрос

0

Вы ищете заявление LIMIT?

SELECT * FROM `prods` WHERE (date <= '2010-08-26') order by activeUntil DESC LIMIT 1