J'essaie d'interroger une table dans l'ordre décroissant en fonction de sa colonne de clé primaire.Ordre MySQL par clé primaire de manière dynamique dans l'ordre DESC
Voici la requête:
SELECT * FROM fdmsus_demo.vitalstats
ORDER BY
(SELECT `COLUMN_NAME`
FROM `information_schema`.`COLUMNS`
WHERE (`TABLE_SCHEMA` = 'fdmsus_demo')
AND (`TABLE_NAME` = 'vitalstats')
AND (`COLUMN_KEY` = 'PRI')
) DESC LIMIT 10;
J'attends cette requête pour renvoyer les lignes dans l'ordre décroissant. Cependant, cela ne fonctionne pas comme prévu. Je pense que DESC n'est pas appliqué à la requête. La raison pour laquelle je suis en train d'écrire la requête de cette façon est, je voulais utiliser cette requête dans mon code Java et il fonctionnera paramétrés comme:
public void myFunction(String dbName, String tableName);
Parce que lors de l'exécution, je ne vais pas savoir ce sera le principal clé d'une table. Cependant, je ne fournis que 2 paramètres dbname et tablename. Par conséquent aller chercher le nom de colonne de clé primaire à l'aide suivante sous-requête:
(SELECT `COLUMN_NAME`
FROM `information_schema`.`COLUMNS`
WHERE (`TABLE_SCHEMA` = 'fdmsus_demo')
AND (`TABLE_NAME` = 'vitalstats')
AND (`COLUMN_KEY` = 'PRI')
)
Au-dessus de la requête est équivalente à:
SELECT * FROM fdmsus_demo.vitalstats ORDER BY VitalsMasterKey DESC LIMIT 10;
Ce qui renvoie un résultat par ordre décroissant comme prévu.
Quelqu'un peut-il s'il vous plaît m'aider à corriger la requête et obtenir la sortie dans l'ordre décroissant. Toute aide serait appréciée.
Merci.
Que diriez-vous séparer cela en deux étapes? Récupérez d'abord le nom de la colonne primaire, puis le résultat de la requête trié par cette colonne. – Blank