想象一下,我有一个名为 fruits 的表,如下所示。
| id | fruit | colour |
|--------------------------------------|
1 | ptiru | Grape | Green/Red |
2 | wlk3b | Banana | Yellow |
3 | i9nuc | Strawberry | Red |
让我们关注ID列。你可以看到它不是一个自动递增的整数,每次增加+1。但相反,它是5个数字/字母的随机组合。
如果我选择了第二条记录(香蕉),我将如何选择上一条记录(葡萄)和下一条记录(草莓)?
不能等待答案;)谢谢!
答案 0 :(得分:1)
在循环之前将变量设置为0 ($i = 0)
,这将在循环($i++)
内递增。增加值后,使用mysql_data_seek($result,$i)
获取下一条记录,或使用前一条记录的mysql_data_seek($result,($i - 2))
。
答案 1 :(得分:0)
在这里走出困境,因为我从来没有见过这样的事情,但我会说" id"列不是真正的id ...它可能是一个唯一的密钥,但不是真正的ID。我添加一个自动增量的列并从那里开始....
答案 2 :(得分: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 |
+----------+-------+------------+
然后,您可以在代码中的数组中加载它们,并根据需要使用索引查找下一个/上一个水果。
答案 3 :(得分:0)
经过一些阅读后,你将无法做到这一点,因为订单不一定是相同的。
当你创建一个带有索引或PK的表时,你的行会有一个订单,你没有指定你是否有一个,也没有指定哪一行,所以可能你没有。
当您创建没有索引的表并开始插入时,最后一个插入将显示为最后一个,但如果您进行一些修改,行将更改位置,请查看此link
所以如果你想知道之前什么是“香蕉”添加一个索引,它将按顺序排序,或者如果你想按Random排序并获得值,最好的方法是使用存储过程或函数,游标和变量。
问候