从第一条记录返回记录以获取返回所需的记录数

时间:2012-10-05 07:59:43

标签: mysql

好的我甚至不知道如何在标题中解释这个,但这就是我想要的。

首先我有5条记录

id | name  |
------------
1  | ringo |
------------
2  | nashi |
------------
3  | momo  |
------------
4  | manga |
------------
5  | tokyo |

现在我会在我将开始查询的行上生成一个随机数。例如,我得到一个4的随机数,所以我将获得第4行和第5行。但我的问题是每个查询需要4条记录。所以这意味着我将回到第一个记录并获得前两行。

如果我的查询结果缺少我想要的记录数量,是否有可能返回第一行?

这是一个关联的问题Select from nth record and so on in MySQL,显示了我到目前为止所做的工作。

2 个答案:

答案 0 :(得分:3)

如果您首先按照大于id的记录对表格进行排序,那么按id,您只需要LIMIT前四个记录的结果集:

SELECT * FROM my_table ORDER BY id >= 4 DESC, id LIMIT 4

sqlfiddle上查看。

答案 1 :(得分:1)

这就是我要做的事。

SELECT * FROM `your_table`
WHERE `id` >= 3 /* 3 is some random number */
UNION
SELECT * FROM `your_table`
WHERE `id` < 5
LIMIT 4

编辑:在他的评论中,eggyal的问题值得考虑。我考虑该选项的建议如下。

SELECT * FROM `your_table`
WHERE `id` >= 3 /* 3 is some random number */
UNION
SELECT * FROM (
    SELECT * FROM `your_table` LIMIT 4
) a
LIMIT 4