如何选择TOP 5然后选择以下5个?

时间:2010-03-20 12:17:27

标签: sql select

因为评论总是有,你可以选择显示前5条评论(我知道如何),如果有超过5条,你可以点击链接,它会显示以下5条评论。问题是我不知道代码应该如何显示下一个5。

更好地了解我在说什么 假设我有10条评论,我使用

  

SELECT * FROM news ORDER BY ID DESC   限制5

将显示前5条评论说,ID为10,9,8,7,6的评论

但如果我想要ID为5,4,3,2,1的评论怎么办?

5 个答案:

答案 0 :(得分:4)

SELECT * FROM news ORDER BY ID DESC LIMIT 5, 5

假设您使用MySQL,LIMIT支持两个参数,offset(可选)和row_count

  

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

使用OFFSET的替代方法是与PostgreSQL兼容。

答案 1 :(得分:2)

我假设你在谈论MySQL,所以你的答案是:

SELECT * FROM news ORDER BY ID DESC LIMIT 5 OFFSET 5

答案 2 :(得分:1)

与风味无关的一种方法是:

SELECT TOP 5 *
  FROM table
 WHERE pk NOT IN (SELECT TOP (page * 5) pk
                    FROM table
                   ORDER BY pk)
 ORDER BY pk

答案 3 :(得分:1)

这是客户的事。

显示5,隐藏其余部分直到被点击。喜欢这个网站:没有回电来获取剩余的隐藏评论。

答案 4 :(得分:0)

如果你想显示所有文本的前五个评论(从你对Joscha的评论中获取),然后是另外五个评论但是缩短文本或只是标题,你不应该使用两个SQL查询,而是更多的是这在您的应用程序逻辑中。

所以选择所有新闻条目:

SELECT id, title, body, date FROM news ORDER BY id DESC LIMIT 10

然后循环结果。显示与前五个不同的前五个。

如果你想拥有类似Paginator的东西,你可以从第0页开始:

$page = isset($_GET['page'] ? intval($_GET['page']) : 0;
SELECT id, title, body, date FROM news ORDER BY id DESC LIMIT 5 OFFSET $page * 5 + 5;