J'ai plusieurs valeurs stockées dans ma base de données en tant que type de données DATETIME
(YYYY-MM-DD HH: MM: SS), et j'ai essayé de les obtenir dans un ordre décroissant - Du plus grand au moins (dans le cas des dates - Du plus récent au plus ancien), cependant, curieusement, il semble ignorer complètement l'existence de l'opérateur DESC .
La requête SQL (abrégée):
SELECT post_datetime FROM post WHERE type=`published` ORDER BY post_datetime DESC LIMIT 3
Et à partir de cela, ils impriment dans cet ordre:
2014-04-30 11:55:11
2014-07-01 12:25:40
2014-07-02 12:28:03
(Il se trouve que ce sont aussi les entrées de date "les plus anciennes" dans la base de données)
Solution? Je noterai que l'utilisation de DESC sur d'autres choses (comme les nombres normaux) ne fonctionne pas non plus. J'ai vérifié ma syntaxe, essayé des guillemets, pas de guillemets, des guillemets doubles, etc.
( Remarque - Je ne serai pas en mesure de répondre à d'autres questions pendant plusieurs heures, mais je ferai de mon mieux pour répondre une fois de retour)
(6/11/17)
Edit: Pour clarifier, pour les futurs lecteurs, la faute de frappe de syntaxe n'était pas liée au problème et était une erreur de ma part lors de la saisie d'un exemple. J'avais utilisé un constructeur de requêtes maison pendant si longtemps que j'avais oublié la syntaxe appropriée à l'époque. Le problème se situait dans la logique de mon programme - pas dans la requête. L'exemple ci-dessus a été modifié et est la bonne solution pour quiconque cherche à effectuer la tâche mentionnée. Je suis désolé que cela ait été vu plus de 50 000 fois ... mais maintenant vous savez.
AND
entre ORDER BY
et LIMIT
=
entre ORDER BY
, LIMIT
mots-clés et conditionAinsi, votre requête ressemblera à:
SELECT post_datetime
FROM post
WHERE type = 'published'
ORDER BY post_datetime DESC
LIMIT 3
Essayer:
SELECT post_datetime
FROM post
WHERE type = 'published'
ORDER BY post_datetime DESC
LIMIT 3
Supprimez les citations ici:
est:
ORDER BY = 'post_datetime DESC' AND LIMIT = '3'
Devrait être:
ORDER BY post_datetime DESC LIMIT 3