我想使用一个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中查看它们,但这比我希望的要慢。有没有更快的方法呢?
我会对返回两行的东西感到满意--即具有指定值的那一行和下一行。
编辑:对不起,我的问题表达得很糟糕。不幸的是,我对“下一个”的定义不是基于ID,而是基于水果名称的字母顺序。因此,我上面的例子是错误的,应该返回橙子,因为它是按字母顺序排在苹果之后的。有没有一种方法可以对字符串而不是Is进行比较?
发布于 2008-12-31 13:49:19
编辑完问题并进行下面的简化后,我们可以将其更改为
SELECT id FROM table WHERE fruit > 'apples' ORDER BY fruit LIMIT 1
发布于 2008-12-31 13:54:55
SELECT * FROM table WHERE id > 1 ORDER BY id LIMIT 1
更简单
更新:
SELECT * FROM table WHERE fruit > 'apples' ORDER BY fruit LIMIT 1
发布于 2008-12-31 13:51:09
我不熟悉MySQL语法,但是对于SQL Server,您可以使用"top“来做一些事情,例如:
SELECT TOP 1 * FROM table WHERE id > 1 ORDER BY id;
这里假设id字段是唯一的。如果它不是唯一的(比方说,一个外键),您可以执行类似的操作,然后重新连接同一个表。
因为我不使用MySQL,所以我不确定它的语法,但我想它应该是相似的。
https://stackoverflow.com/questions/402980
复制相似问题