2012-02-05 73 views
1

下面的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,所以它不是那么多结果集中的百万职位,而是百万职位在论坛上。

回答

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 
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 

所以,你必须得到的加入的百万行。

相关问题