简单的 SQL 问题
Posted
技术标签:
【中文标题】简单的 SQL 问题【英文标题】:Simple SQL question 【发布时间】:2009-07-12 13:37:58 【问题描述】:(我编不出好标题,抱歉)
所以我用这个分页:
$page = $_GET['page'];
$max = 5;
// if $page is empty, set page number to 1
if (empty($page)) $page = 1;
$limit = ($page - 1) * $max;
$sql = mysql_query("SELECT * FROM posts ORDER BY date DESC LIMIT $limit, $max");
$totalres = mysql_result(mysql_query("SELECT COUNT(id) AS tot FROM posts WHERE tid = 1"),0);
$totalpages = ceil($totalres / $max);
?>
这可行,但我想要的是,即使我更改页面,日期最早的帖子也始终保持在最前面。我怎样才能做到这一点?我知道你可以,但我不记得怎么做。
希望你这样做,谢谢
【问题讨论】:
只是一个快速提醒,而不是吹毛求疵。摆脱那个 Select * 您选择的所有数据都需要从数据库服务器传输到您的 php 脚本。 William T Wild:你不知道他不需要所有数据。但是,如果你不同意,那么我同意,去掉那个选择 *。 嗯,这里还有一些其他的答案,显然由于匿名投票而被作者删除?糟糕。任何人都应该如何从中学习......? 【参考方案1】:您可能需要进行联合查询,因为您真正想要的是两条数据的组合...
-
最早的帖子
所有其他帖子减去针对页面位置调整的最旧帖子...
select * from posts order by date DESC limit 0,1
union
select * from posts order by date desc limit $start,$end
现在调整你的值,所以 start 是你想要的最小页面 1(如果它是 0,你最旧的帖子将显示两次)
【讨论】:
以上是关于简单的 SQL 问题的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server SQL性能优化之--数据库在“简单”参数化模式下,自动参数化SQL带来的问题