好的我甚至不知道如何在标题中解释这个,但这就是我想要的。
首先我有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,显示了我到目前为止所做的工作。
答案 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