2009-03-08 5 views

Répondre

3

ORDER fonctionnera avec n'importe quelle valeur que vous pouvez mettre dans vos résultats (mais ne doit pas être l'une des valeurs dans les résultats). Cela peut être une colonne dans l'une des tables source ou calculée en utilisant une fonction. Par exemple, vous pouvez utiliser ORDER UPPER(name) pour un tri insensible à la casse.

Si vous ORDER BY RAND() vous commandez par un nombre aléatoire généré pour chaque ligne dans les résultats, c'est-à-dire en retournant les lignes dans un ordre aléatoire. Si vous commandez par SUM() vous avez probablement un GROUP BY là aussi vous pouvez donc commander des clients par le total de la facture calculée par exemple.

Idéalement, vous voulez utiliser une colonne d'un index car cela sera beaucoup plus rapide.

-4

Eh bien, pour faire court: Vous avez pensé que c'était faux.

+0

Chaque fois qu'une réponse a été publiée, je les ai vus dépréciés. – nawfal

10

Vous pouvez commander par presque tout, les fonctions (comme RAND()), agrégations (comme SUM()) et ainsi de suite.

Par exemple, les MySQL-Documentation états comme Syntaxe:

[ORDER BY {col_name | expr | position} 

Ou le Postgresql Documentation est encore plus explicite:

Le option ORDER BY clause a la forme générale:

ORDER BY expression [ ASC | DESC | USING operator ] [, ...]

expression peut être le nom ou le nombre ordinal d'une colonne de sortie (élément de liste SELECT), ou il peut s'agir d'une expression arbitraire formée à partir de valeurs de colonne d'entrée.

Pour votre deuxième question:

  • ORDER BY RAND() ou ORDER BY RANDOM() fait ce qu'il dit: Vos lignes sont shuffeled et vous les obtenir dans un ordre aléatoire. Donc, si vous faites un , vous sélectionnez une rangée aléatoire (= une) sur votre table.
  • ORDER BY SUM(Column) n'a de sens qu'en combinaison avec une instruction GROUP BY.
0

En fait, cela dépend de l'implémentation. L'instruction que vous avez mentionnée n'est pas compatible avec SQL92 mais elle peut être acceptée par une implémentation.

Questions connexes