以下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返回特定论坛顺序中所有帖子的列表,所以它不是结果集中的第一百万个帖子,而是第一百万个帖子论坛。答案 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
因此,您将获得最终连接的第一百万行。