9
votes

Comment puis-je inverser la commande par défaut dans mysql?

dans MySQL, lorsque vous exécutez une instruction SELECT SQL, il existe une commande par défaut si vous n'incluez pas une clause de tri. Comment puis-je inverser la commande par défaut? Il suffit d'ajouter Desc ?


2 commentaires

Dupliquer: Stackoverflow.com/Questtions/1793147/...


Il n'existe pas de "commande par défaut" afin que vous ne puissiez pas "inverser".


5 Réponses :


3
votes

Il n'y a pas de commande garantie si vous ne spécifiez pas de clause de commande par clause, le «inverse de l'ordre par défaut» est indéfini.


1 commentaires

Pour ceux qui préfèrent les réponses avec des preuves pour sauvegarder les revendications formulées: Stackoverflow.com/Questtions/8746519/...



1
votes

Je pense que vous seriez mieux servi en spécifiant l'ordre que vous voulez réellement. Les tables, de par leur nature, n'ont aucune commande. Il est probablement simplement affiché dans l'ordre dans lequel les lignes ont été insérées - bien qu'il n'y ait aucune garantie qu'il restera dans cet ordre.

chances que ce soit, vous voulez probablement simplement ajouter ceci: P>

ORDER BY id DESC


4 commentaires

Mais quelle pitié, il n'y a pas de champ "id" dans la table.


Mais s'il n'y a pas de champ d'identification, ni équivalent, la commande est-elle significative?


Je pense que l'ordre par défaut dans lequel les lignes ont été insérées, l'ordre par défaut est "d'abord inséré, du dernier". Je veux le changer en "d'abord inséré, d'abord".


S'il n'y a pas d'horodatage logique ni d'une sorte de champ d'incrément, vous disposez des informations insuffisantes disponibles pour déterminer l'ordre historique des insertions.



5
votes

Si vous souhaitez que les données sortent systématiquement commandées, vous devez utiliser commander par code> suivi de la (s) colonne (s) que vous souhaitez commander la requête par. ASC code> est la valeur par défaut, vous n'avez donc pas besoin de la spécifier. IE:

ORDER BY first_column, second_column DESC


2 commentaires

L'ordre dont j'ai besoin est l'ordre inverse dans lequel les rangées ont été insérées. "Premier inséré, premier sorti".


@Steven: Vous devrez fournir la sortie de décrire [votre nom de table ici] dans votre base de données avant de pouvoir suggérer quoi utiliser. Si vous avez une colonne de clé primaire Autonumber - commandez par IT ASC . La prochaine meilleure chose serait une colonne Date_Créated, à l'aide du type de données DateTime. Encore une fois, ASC .



1
votes

Sauf si vous pouvez spécifier un nom de colonne dans une clause par , vous ne pouvez pas utiliser desc , et vous devrez recourir à des astuces impliquant Limiter pour voir les derniers enregistrements.

Ce serait insatisfaisant, je pense.


0 commentaires

6
votes

Vous pouvez définir un compteur dans vos champs de résultat et trier l'utilisation:

SELECT *, @counter := @counter + 1 AS 'counter' FROM tableName, (SELECT @counter := 0) r ORDER BY counter DESC


2 commentaires

OUI !! Ça marche ! Merci ! Vous avez répondu parfaitement à la question.


@ Jerry, mais ce n'est que l'inverse de l'ordre de l'ordre des lignes, ce qui n'a pas de connexion garantie à l'ordre de mise en œuvre, ce qui n'a aucune garantie pour être quelque chose en particulier. Si vous voulez une commande garantie, il doit être dans les données. aussi Il n'y a aucune garantie pour les requêtes qui définissent la variable et la lecture d'une variable, de sorte que cette requête a un comportement indéfini. Pour une certaine construction récente de 5,7 personnes à Percona qui a examiné la mise en œuvre a été constatée que l'utilisation de variables dans case expressions ( pas comme ça) donne certains comportements prévisibles. Jusqu'à.