首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择next和prev id order不符合逻辑。

问选择next和prev id order不符合逻辑。
EN

Stack Overflow用户
提问于 2013-11-21 12:18:04
回答 2查看 52关注 0票数 1

是否可以从下表中选择下一行?

代码语言:javascript
复制
Table foo
Values:
312
911
128 <-- prev
389 <-- current
124 <-- next
993
213

我不知道如何选择这个,因为数字是不符合顺序的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-21 12:19:08

如果您没有指定订单,那么DB引擎将根本不会对数据进行排序。因此,无论您在特定记录之后尝试选择什么,都需要进行排序。

票数 0
EN

Stack Overflow用户

发布于 2013-11-21 12:40:21

可以使用MySQL 处理程序语法。但文档显示,它只适用于MyISAM引擎:

“第三个处理程序.读取语法按自然行顺序从表中获取一行” 自然行顺序是将行存储在MyISAM表数据文件中的顺序。

假设下表如下:

代码语言:javascript
复制
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

有以下数据:

代码语言:javascript
复制
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      |
+-------+---------------------+-----------+

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

代码语言:javascript
复制
mysql> handler a open;
Query OK, 0 rows affected (0.00 sec)

读取任意行:

代码语言:javascript
复制
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)

读取先前按自然顺序读取的行:

代码语言:javascript
复制
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)

诸如此类:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20120813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档