我想使用单个SQL查询(在MySQL中)来查找我指定的记录之后的记录.
即,如果表有:
id, fruit -- ----- 1 apples 2 pears 3 oranges
我希望能够进行如下查询:
SELECT * FROM table where previous_record has id=1 order by id;
(显然这不是真正的SQL语法,我只是使用伪SQL来说明我想要实现的目标)
将返回:
2, pears
我目前的解决方案只是获取所有记录,并在PHP中查看它们,但这比我想要的慢.有更快的方法吗?
我会对返回两行的东西感到满意 - 即具有指定值的行和下一行.
编辑:对不起,我的问题措辞严厉.不幸的是,我对"next"的定义不是基于ID,而是基于水果名称的字母顺序.因此,我上面的例子是错误的,应该返回橙子,因为它在苹果之后按字母顺序排列.有没有办法对字符串而不是ID进行比较?
在问题编辑和下面的简化之后,我们可以将其更改为
SELECT id FROM table WHERE fruit > 'apples' ORDER BY fruit LIMIT 1
SELECT * FROM table WHERE id > 1 ORDER BY id LIMIT 1
更简单
更新:
SELECT * FROM table WHERE fruit > 'apples' ORDER BY fruit LIMIT 1