2013-11-21 37 views

回答

0

如果您未指定订单,那么数据库引擎根本不会订购数据。因此无论您在特定记录需要订购后尝试选择。

+0

没有'自然'的秩序?像第一次来到等? (基本上是他们被插入的顺序) – John

+2

不,订单可能会在您选择的每个选择上不同。 –

+0

@jurgen这是不正确的,每次相同的选择(不包括顺序)不会有所不同。 – marekful

1

可以使用MySQL HANDLER语法。该文件说,它仅与MyISAM引擎虽然工作原理:

“第三个HANDLER ... READ语法取出从表中的一行在 自然行顺序”

自然行的顺序是按顺序哪些行存储在MyISAM 表数据文件中。

假设如下表:

CREATE TABLE `a` (
    `a_col` int(10) unsigned NOT NULL DEFAULT '0', 
    `d_col` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `c_col` varchar(45) CHARACTER SET latin1 DEFAULT NULL, 
    PRIMARY KEY (`a_col`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

数据如下:

mysql> select * from a; 
+-------+---------------------+-----------+ 
| a_col | d_col    | c_col  | 
+-------+---------------------+-----------+ 
|  0 | 2013-11-20 15:25:55 | nürnberg | 
|  3 | 2013-11-11 00:00:00 | NULL  | 
|  4 | 2013-11-21 12:32:56 | adsf  | 
| 11 | 2013-11-21 12:33:04 | adsf  | 
| 17 | 2013-11-21 12:32:46 | adsf  | 
| 30 | 2013-11-21 12:33:11 | adsf  | 
| 861 | 2013-11-21 12:33:01 | adsf  | 
+-------+---------------------+-----------+ 

现在你可以打开一个处理程序:

mysql> handler a open; 
Query OK, 0 rows affected (0.00 sec) 

阅读在任意行:

mysql> handler a read `PRIMARY` = (4); 
+-------+---------------------+-------+ 
| a_col | d_col    | c_col | 
+-------+---------------------+-------+ 
|  4 | 2013-11-21 12:32:56 | adsf | 
+-------+---------------------+-------+ 
1 row in set (0.00 sec) 

阅读接下来将以前由自然顺序读行:

mysql> handler a read `PRIMARY` NEXT; 
+-------+---------------------+-------+ 
| a_col | d_col    | c_col | 
+-------+---------------------+-------+ 
| 11 | 2013-11-21 12:33:04 | adsf | 
+-------+---------------------+-------+ 
1 row in set (0.02 sec) 

等等:

mysql> handler a read `PRIMARY` NEXT; 
+-------+---------------------+-------+ 
| a_col | d_col    | c_col | 
+-------+---------------------+-------+ 
| 17 | 2013-11-21 12:32:46 | adsf | 
+-------+---------------------+-------+ 
1 row in set (0.00 sec)