在结果集中的特定位置获取一行

时间:2012-02-05 20:12:57

标签: mysql

以下MySQL查询返回的结果集只有超过一百万行:

SELECT postid
FROM post p
JOIN thread t ON p.threadid = t.threadid
WHERE t.forumid = 10
AND t.visible = 1
AND p.visible = 1
ORDER BY p.dateline desc

哪个好,但是我想让排在第一百万个位置。

所以问题是,如果你还没有猜到,我该怎么做呢

注意:此表正在使用中,因此会一直添加新行。

编辑:这个问题并不完全清楚,查询按照发布日期desc返回特定论坛顺序中所有帖子的列表,所以它不是结果集中的第一百万个帖子,而是第一百万个帖子论坛。

2 个答案:

答案 0 :(得分:4)

您可以使用LIMIT子句接受从零开始的记录索引,后跟记录计数。

因此,对于第一百万行的单个记录,您可以使用:

SELECT postid
FROM post p
JOIN thread t ON p.threadid = t.threadid
WHERE t.forumid = 10
AND t.visible = 1
AND p.visible = 1
ORDER BY p.dateline desc
LIMIT 999999,1

答案 1 :(得分:0)

SELECT 
    postid
    @curRow := @curRow + 1 AS row_number
FROM post p
JOIN (SELECT @curRow := 0) thread t ON p.threadid = t.threadid
WHERE t.forumid = 10
      AND t.visible = 1
      AND p.visible = 1
      AND row_number=1000000
ORDER BY p.dateline desc

因此,您将获得最终连接的第一百万行。