随意选择后续记录的限制

时间:2009-03-12 10:42:21

标签: sql mysql

我想在按列表排序的结果集中,在任何给定记录的记录之后立即执行查询以检索记录。我不明白如何在sql语法中使用limit关键字来执行此操作。

我可以使用WHERE primarykey = number,但是当我只有一个结果时,如何限制结果有用?

如何获得具有任意主键编号的下一条记录?

我有一个任意的主键,想要选择按日期排序的下一个主键。

3 个答案:

答案 0 :(得分:2)

这将模拟LEAD()分析函数(即从表中选择每一行的下一个值)

SELECT  mo.id, mo.date,
        mi.id AS next_id, mi.date AS next_date
FROM    (
        SELECT mn.id, mn.date,
               (
               SELECT  id
               FROM    mytable mp
               WHERE   (mp.date, mp.id) > (mn.date, mn.id)
               ORDER BY
                       mp.date, mp.id
               LIMIT 1
               ) AS nid
        FROM   mytable mn
        ORDER BY
               date
        ) mo,
        mytable mi
WHERE mi.id = mo.nid

如果您只想为给定ID选择下一行,可以使用:

SELECT  *
FROM    mytable
WHERE   (date, id) >
        (
        SELECT  date, id
        FROM    mytable
        WHERE   id = @myid
        )
ORDER BY
        date, id
LIMIT 1

如果您在(date, id)

上有索引,这将最有效

答案 1 :(得分:1)

如果您正在寻找34之后的那个,那么这样的事情怎么样?

SELECT * FROM mytable WHERE primaryKey > 34 ORDER BY primaryKey LIMIT 1

答案 2 :(得分:0)

可能很简单:

select *
from mytable
where datecolumn > (select datecolumn from mytable where id = @id)
order by datecolumn
limit 1

(评论后编辑)