作为评论总是有它,你可以选择显示前5个评论(我知道如何),如果超过5,你可以点击一个链接,它会显示以下5条评论。问题是,我不知道该代码应该如何为它显示我在说什么 比方说,我有10条评论中,我使用如何选择TOP 5,然后选择以下5?
下一个5
更好的主意SELECT * FROM新闻ORDER BY ID DESC LIMIT 5
,将显示前5评论说,ID为10,9,8,7,6
但什么意见,如果我要评论ID为5,4,3,2,1?
作为评论总是有它,你可以选择显示前5个评论(我知道如何),如果超过5,你可以点击一个链接,它会显示以下5条评论。问题是,我不知道该代码应该如何为它显示我在说什么 比方说,我有10条评论中,我使用如何选择TOP 5,然后选择以下5?
下一个5
更好的主意SELECT * FROM新闻ORDER BY ID DESC LIMIT 5
,将显示前5评论说,ID为10,9,8,7,6
但什么意见,如果我要评论ID为5,4,3,2,1?
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兼容。要做到这一点
我假设你正在谈论的MySQL,那么你的答案是:
SELECT * FROM news ORDER BY ID DESC LIMIT 5 OFFSET 5
一种方式,是味道无关的是:
SELECT TOP 5 *
FROM table
WHERE pk NOT IN (SELECT TOP (page * 5) pk
FROM table
ORDER BY pk)
ORDER BY pk
如果你想显示的所有文字前五的意见(从到Joscha您的评论采取的),然后再过五条评论但使用缩短的文本或只是标题,您不应该使用两个SQL查询,而应该在应用程序逻辑中执行此操作。
所以选择所有的新闻条目:
SELECT id, title, body, date FROM news ORDER BY id DESC LIMIT 10
然后遍历你的结果。显示前五个不同于接下来的五个。
当你想拥有什么分页程序,一样可以下手,说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;
这是一个客户端的事情。
显示5,隐藏其余部分直到点击。喜欢这个网站:没有回电得到剩下的隐藏评论。
对不起,我忘了提及MySQL以及我的坏。 是的,感谢您的回复,我谷歌抵消(从来没有听说过它),有点知道它是如何工作的。但是我应该怎么做,首先它显示TOP 5,并且点击一个链接,它会显示以下5个等等? 我应该使用get函数并将该值用于选择参数吗? – Crays 2010-03-20 12:29:02