gpt4 book ai didi

MySQL 下一个/上一个 ids(任意排序顺序)

转载 作者:行者123 更新时间:2023-11-30 21:24:34 27 4
gpt4 key购买 nike

这是我的表格:

mysql> describe ps;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| a | text | YES | | NULL | |
| b | text | YES | | NULL | |
| c | text | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

假设我有如下数据:

mysql> select * from ps;
+----+------+------+------+
| id | a | b | c |
+----+------+------+------+
| 1 | x | x | x |
| 2 | x | y | x |
| 3 | x | z | x |
| 4 | x | x | y |
| 5 | x | x | z |
| 6 | x | y | x |
| 7 | x | y | y |
| 8 | x | y | z |
| 9 | y | x | x |
| 10 | z | x | x |
| 11 | y | y | x |
| 12 | y | z | x |
| 13 | y | x | y |
| 14 | y | x | z |
| 15 | z | x | x |
| 16 | z | y | x |
| 17 | z | z | x |
| 18 | z | x | y |
| 19 | z | x | z |
+----+------+------+------+
19 rows in set (0.00 sec)

我的查询是:

mysql> select * from ps where b = 'x' order by c;
+----+------+------+------+
| id | a | b | c |
+----+------+------+------+
| 1 | x | x | x |
| 9 | y | x | x |
| 10 | z | x | x |
| 15 | z | x | x |
| 4 | x | x | y |
| 13 | y | x | y |
| 18 | z | x | y |
| 5 | x | x | z |
| 14 | y | x | z |
| 19 | z | x | z |
+----+------+------+------+
10 rows in set (0.00 sec)

假设我有 id 为 4 的行。所以,我知道我在 id 4,条件是 b = 'x',顺序是 c。我想获取下一行(ID 13)和上一行(ID 15)。我可以通过 SQL 查询从数据库中找到它们吗,还是我必须检索所有内容并在我的代码中循环遍历它们?

最佳答案

您可以使用 limit 子句来执行此操作。

但是当数据已经在 PHP 中时,在 sql 中执行此操作似乎没有任何意义。为什么不将行放入每行一个元素的数组中,并使用数组的指针来实现这一点?

prev()、current() 和 next() 函数应该是您所需要的。

关于MySQL 下一个/上一个 ids(任意排序顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com