0

好吧,我真的不知道如何在标题中解释这一点,但这就是我想要的。

首先,我确实有 5 条记录

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

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

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

这是MySQL 中的 Select from nth record 等相关问题,它显示了我到目前为止所做的事情。

4

2 回答 2

3

如果您首先按大于 pivot 的记录对表进行排序id,然后按对表进行排序,则id您只需要LIMIT前四个记录的结果集:

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

sqlfiddle上查看。

于 2012-10-05T08:56:40.983 回答
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
于 2012-10-05T08:13:52.410 回答