我想在按列表排序的结果集中,在任何给定记录的记录之后立即执行查询以检索记录。我不明白如何在sql语法中使用limit关键字来执行此操作。
我可以使用WHERE primarykey = number,但是当我只有一个结果时,如何限制结果有用?
如何获得具有任意主键编号的下一条记录?
我有一个任意的主键,想要选择按日期排序的下一个主键。
答案 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
(评论后编辑)