2010-08-26 5 views
0

J'ai une table avec les éléments suivants (je l'ai trié par date):MySQL requête de sélection - supprimer les lignes indésirables

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 

Je veux choisir la date la plus récente Whos PRODID est dans le passé. Mon problème est que je reçois plusieurs prodId avec la même valeur (dans cet exemple, 48 et 1541).

Ma requête est actuellement:

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

Comment puis-je changer ma requête pour supprimer les lignes non désirées?

+1

Qu'est-ce que 'activeUntil'? – Lekensteyn

+0

Erreur humaine>.

Répondre

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

C'est exactement ce que je voulais = D Merci. –

0

ajouter limit 1 pour interroger

0

Vous cherchez la déclaration LIMIT?

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