1

想象一下,我有一张名为fruits的桌子,如下所示。

  |   id    |    fruit     |   colour    |
  |--------------------------------------|
1 |  ptiru  |    Grape     |  Green/Red  |
2 |  wlk3b  |    Banana    |   Yellow    |
3 |  i9nuc  |  Strawberry  |     Red     |

让我们关注 ID 列。您可以看到它不是一个自动递增的整数,每次都会增加 +1。但相反,它是 5 个数字/字母的随机组合。

如果我选择了第二条记录(香蕉),那么我将如何选择上一条记录(葡萄)和下一条记录(草莓)?

等不及回答了;)谢谢!

4

4 回答 4

1

($i = 0)在循环之前将变量设置为 0 ,该变量将在循环内递增($i++)。增加值后,用于mysql_data_seek($result,$i)获取下一条记录或mysql_data_seek($result,($i - 2))上一条记录。

于 2012-05-25T20:15:49.557 回答
0

SELECT @rownum := @rownum AS position, f.* from fruits f, (select @rownum:=0 r ) r

此查询将为您提供如下结果集:

+----------+-------+------------+
| position | id    | fruit      |
+----------+-------+------------+
|        1 | ptiru | Grape      |
|        2 | wlk3b | Banana     |
|        3 | i9nuc | Strawberry |
+----------+-------+------------+

然后,您可以将它们加载到代码中的数组中,并根据需要使用索引查找下一个/上一个水果。

于 2012-05-25T20:39:51.407 回答
0

经过一些阅读,您将无法做到这一点,因为顺序不必相同。

当您使用索引或 PK 创建表时,您的行将有一个顺序,并且您没有指定是否有顺序,也没有指定在哪一行,因此您可能没有顺序。

当您创建一个没有索引的表并开始插入时,最后一个插入将显示为最后一个,但是如果您进行一些修改,行会改变位置,请查看此链接

因此,如果您想知道“香蕉”之前是什么,请添加一个索引,它将按顺序排序,或者如果您想按随机排序并在最好的方法是使用存储过程或函数之前获取值,游标和变量。

问候

于 2012-05-27T15:54:24.193 回答
0

在这里冒险,因为我从未见过这样的事情,但我会说“id”列不是真正的 id ......它可能是唯一的键,但不是真正的 ID。我会添加一个自动增量列,然后从那里开始......

于 2012-05-25T20:11:47.237 回答