select @num:=@num+1 as id, x, y from test where g=true;
上面的查询为我提供了顺序键(id)所需的记录组,但我不想一起获取所有这些记录,我希望每个记录单独按顺序排列。
答案 0 :(得分:2)
您可以使用LIMIT
子句从特定偏移处的序列中进行选择:
select id, x, y
from test
where g=true
limit 4, 1;
请注意,除非您使用ORDER BY
,否则无法保证结果将以任何一致的顺序排列。在您的情况下,您可以订购id
。
答案 1 :(得分:1)
如果我正确理解你的问题,你可以使用子查询 - 你也应该初始化user defined variable
:
select *
from (
select @num:=@num+1 as id, x, y
from test cross join (select @num:=0) t
where g=true
order by test.id
) y
where id = 5
此外,您希望在子查询中包含order by
- 大概是order by test.id
以保证结果的顺序。