sql >> Database >  >> RDS >> Mysql

wat is deze volgorde van 1?

order by 1 betekent "volgorde op het eerste veld dat ik heb geselecteerd" -- d.w.z. in dit geval hetzelfde als order by playerno , omdat playerno was het eerste veld in de lijst.

Als je de officiële bewoording wilt, hier is wat de SQL-92 standaard zegt:

10)If ORDER BY is specified, then each <sort specification> in the
        <order by clause> shall identify a column of T.

        Case:

        a) If a <sort specification> contains a <column name>, then T
          shall contain exactly one column with that <column name> and
          the <sort specification> identifies that column.

        b) If a <sort specification> contains an <unsigned integer>,
          then the <unsigned integer> shall be greater than 0 and not
          greater than the degree of T. The <sort specification> iden-
          tifies the column of T with the ordinal position specified by
          the <unsigned integer>.

In dit geval b is degene die van toepassing lijkt te zijn.

Meer recente versies van de SQL-standaard hebben deze mogelijkheid echter verwijderd, dus nieuwe code zou dit over het algemeen moeten vermijden. Op SQL gebaseerde databaseservers hebben het al een tijdje afgeschaft, maar de meeste blijven het ondersteunen omwille van achterwaartse compatibiliteit. Tegelijkertijd geeft het feit dat ze het hebben afgeschaft aan dat ze het niet langer beschouwen als een functie die ze echt moeten ondersteunen, dus het kan op elk moment worden verwijderd zonder verdere waarschuwing (bijvoorbeeld als ze een bug in dat onderdeel vinden van hun code, kunnen ze besluiten dat de beste manier om de bug op te lossen is om die functie gewoon uit te schakelen).



  1. Gebruiker kan geen databases zien in mysql workbench

  2. problemen met het installeren van perl DBI-mysql in Windows

  3. Waarom SQLSTATE[HY000]:algemene fout?

  4. CryptDB - kan geen verbinding maken met proxy (ERROR 1105 (HY000):(proxy) alle backends zijn niet beschikbaar)