我在MySQL中有个问题,做得对。但是书的代码有点不同。
书:

use tennis;
select playerno, datediff(coalesce(end_date, current_date),
begin_date) as Difference, position
from committee_members
where datediff(coalesce(end_date, current_date), begin_date) > 500
order by 1;

这是1点的什么订单?
我的代码也能正常工作,除了:
select playerno, datediff(coalesce(end_date, current_date) AS Data,
order by Data;

最佳答案

order by 1表示“按我选择的第一个字段排序”——即,在本例中,与order by playerno相同,因为playerno是列表中的第一个字段。
如果您需要正式措辞,下面是SQL-92 standard1所说的:

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

在这种情况下,b似乎适用。
1。此报价来自可自由获得的草案,而不是批准的标准。虽然我确信本草案和标准的最终文本之间至少有一些变化(更不用说标准的一个版本和另一个版本之间的变化),但这种基本的东西似乎不太可能改变(可能永远不会改变)。

关于mysql - 1这个订单是1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11353688/

10-09 00:55