我在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/