按“现场指数”排序

时间:2013-12-29 13:12:59

标签: mysql

我可以在mysql查询中使用order by,但不能使用列名,而是使用“第一列”或类似的列索引或类型顺序吗?

Select * from `users` order by 1

3 个答案:

答案 0 :(得分:1)

是的,MySQL支持通过其位置引用ORDER BY中的列:

  

可以使用列名,列别名或列位置在ORDER BYGROUP BY子句中引用为输出选择的列。列位置是整数,以1 [...]

开头

ORDER BY的语法描述也反映了这一点:

[ORDER BY {col_name | expr | position}
  [ASC | DESC], ...]

然而:

  

不推荐使用列位置,因为语法已从SQL标准中删除。

答案 1 :(得分:0)

是的,你可以。例如,如果你使用1000而不是1,你会得到类似这样的错误:

ERROR 1054 (42S22): Unknown column '1000' in 'order clause'

答案 2 :(得分:0)

是的,有可能,请参阅mysql reference

  

[ORDER BY {col_name | expr |位置}

mysql> select * from kcreate order by 1;
+-------+-------+
| k1    | k2    |
+-------+-------+
|     1 | 99999 |
| 12117 | 10294 |
+-------+-------+
2 rows in set (0.00 sec)

mysql> select * from kcreate order by 2;
+-------+-------+
| k1    | k2    |
+-------+-------+
| 12117 | 10294 |
|     1 | 99999 |
+-------+-------+
2 rows in set (0.00 sec)