2009-10-31 7 views
0

J'ai des problèmes avec la requête MYSQL suivante et j'espère que quelqu'un pourra m'aider.Instruction avancée Mysql

Voici la requête:

SELECT * 
FROM dbcasino_db22.tb_content 
WHERE content_real_folder = 'foldername/' AND content_no < 5099 

Cela fonctionne de la requête, mais me donne tous les enregistrements plus petits que 5099 qui correspondent au content_real_folder - je fait veux juste obtenir le résultat maximum inférieur à 5099 et ne pas avoir le premier enregistrement correspondant au dossier content_real

Mon quess est que la requête de fin ressemblerait à ceci - mais je ne suis pas d'avoir JOIE avec elle

SELECT * DE dbcasino_db22.tb_content OU content_real_folder = 'foldername /' ET content_no < 5099 AYANT MAX (content_no)

S'il y a quelqu'un qui pourrait l'aider, il serait très apprécié.

Répondre

3

Cela devrait fonctionner pour cela. ORDER indique le résultat maximum pour être sur le dessus et LIMIT 1 indique qu'il vous ne souhaitez que le premier résultat

SELECT * FROM dbcasino_db22.tb_content 
WHERE content_real_folder = 'foldername/' AND content_no < 5099 
ORDER BY content_no DESC 
LIMIT 1 
+0

+1 pour ORDER BY/DESC/LIMIT –

+0

Merci un million de Jason Je peux me donner un coup de pied pour ne pas penser à la fonction DESC :-) :-) –

+0

Après l'avoir oublié une douzaine de fois, vous commencerez à vous en souvenir. C'est comme ça que je m'en suis souvenu si vite cette fois. – Jason

0

Je pense que la solution la plus simple consiste à trier par content_no décroissant et limite les réponses à 1.

0

si je vous comprends bien, vous voulez

SELECT * FROM dbcasino_db22.tb_content WHERE content_real_folder = 'foldername/' AND content_no < 5099 order by content_no desc limit 1