sql >> Databasteknik >  >> RDS >> Mysql

vad är denna ordning med 1?

order by 1 betyder "ordning efter det första fältet jag valde" -- dvs, i det här fallet, samma som order by playerno , eftersom playerno var det första fältet i listan.

Om du vill ha den officiella formuleringen, här är vad SQL-92 standard säger:

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>.

I det här fallet, b är den som verkar gälla.

Senare versioner av SQL-standarden har dock tagit bort denna funktion, så ny kod bör i allmänhet undvika det. SQL-baserade databasservrar har fasat ut det ett tag nu, men de flesta fortsätter att stödja det för bakåtkompatibilitetens skull. Samtidigt indikerar det faktum att de har utfasat det att de inte längre anser att det är en funktion som de verkligen behöver stödja, så det kan tas bort när som helst utan ytterligare varning (t.ex. om de hittar en bugg i den delen av sin kod kan de bestämma att det bästa sättet att fixa felet är att bara inaktivera den funktionen).



  1. Välja rader där ett fält är null med PHP PDO-förberedda satser och MySQL

  2. Varning:mysql_num_rows() förväntar sig att parameter 1 är resurs, boolesk given

  3. Hitta icke-ASCII-tecken i varchar-kolumner med SQL Server

  4. Skicka en lista till MySQL lagrad procedur och kontrollera att ALLA värden finns