Bienvenue,
Je me demande s'il est possible d'inverser les données retournées dans le tri "ordre par desc" mais je veux ces données dans l'ordre inverse.
Par exemple, j'ai une table avec des valeurs
ID
1
2
3
4
Et je fais
Commande par ID ASC LIMIT 3 J'ai reçu
1
2
3
Quand je commande par ID DESC limite 3 j'obtiens
4
3
2
Je voudrais avoir
3
2
1
Je voudrais donc commander par ASC mais inverser les résultats. Je faisais toujours cela dans PHP côté en utilisant array_reverse, mais aujourd'hui je veux vous demander. Maybye je me trompe et je peux le faire juste dans Mysql. Cordialement
SELECT *
FROM (
SELECT ...
FROM ...
ORDER BY ID ASC
LIMIT 3
) AS sq
ORDER BY ID DESC
Considérez-le comme fonctionnant en deux étapes. Tout d'abord, il exécute la requête interne: sélectionne 3 enregistrements avec les ID les plus bas. Ensuite, dans la requête externe, il les trie par ordre décroissant.
Vous pouvez récupérer les trois premières lignes à l'aide d'une sous-requête, puis inverser l'ordre de ces lignes dans une requête externe:
SELECT *
FROM
(
SELECT *
FROM yourtable
ORDER BY ID
LIMIT 3
) T1
ORDER BY ID DESC
Non, vous ne vous trompez pas. Il n'y a aucune différence pour une quantité raisonnable de données. Array_reverse est correct.
Ce n'est pas une chose dont vous devez trop vous préoccuper. Utilisez simplement ce que vous aimez le plus - pour plus de lisibilité ou pour d'autres raisons subjectives
Vous pouvez le faire avec une sous-requête:
SELECT * FROM
(SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r
ORDER BY r.idMyTable DESC
Ressources:
Vous pouvez utiliser un SELECT
externe pour inverser l'ordre:
SELECT *
FROM (
SELECT …
ORDER BY id ASC
LIMIT 3
) sub
ORDER BY id DESC