我正在编写一个博客文章之类的东西,其中作者将发布文章并将其显示在前端,我的问题开始于选择帖子,因为我必须满足在前端发布新闻的某些条件。
我在数据库中有4个字段,即
title
pic_title
pic_brief
pic_detail您已经猜到了,除了title表之外,其余的三个表将以varchar数据类型保存图像的路径,该路径将用于显示为帖子,前端的格式如下所示
a)前端将显示总共八个帖子(数据库中的八个条目)
b)顶部将有三个帖子,其中包括来自表标题、pic_title和pic_brief的值(共3个值)
c)剩下的五个将只包含标题和pic_title (不包括top的三个条目)请注意:我希望第二个查询排除已经存在于顶部的前3个记录,即(第一个查询=降序为3个帖子,第二个查询=8-第一个3=5个帖子)
我想要的帖子的顺序是通过id DESC
编辑:我把第一个查询当作
SELECT * FROM news ORDER BY id DESC LIMIT 3现在,如果我执行相同的第二个查询,并再次尝试按降序填充值,则将访问相同的记录
简而言之,我想要一个查询,它将跳过最后三个记录,按id排序
如何在PHP中实现这一壮举?
发布于 2010-08-23 04:10:24
在这种情况下,我可能会选择一次选择所有8条记录-访问数据库的次数越少越好。
SELECT t.title,
t.pic_title,
t.pic_brief
FROM TABLE t
ORDER BY t.id DESC
LIMIT 8...because剩下的只是演示:
$query = sprintf("SELECT t.title,
t.pic_title,
t.pic_brief
FROM TABLE t
ORDER BY t.id DESC
LIMIT 8");
// Perform Query
$result = mysql_query($query) or die( mysql_error() );
$rowcount = 1;
// Use result
while ($row = mysql_fetch_assoc($result)) {
if(rowcount <= 3) {
echo $row['title']
echo $row['pic_title']
echo $row['pic_brief']
} else {
echo $row['title']
echo $row['pic_title']
}
++$rowcount;
}发布于 2010-08-23 03:52:14
如果您只是想要SQL,那么它就是:
第一个查询
SELECT * FROM `table` LIMIT 3第二个查询
SELECT * FROM `table` LIMIT 3,5(其中table当然是您的表名。当然,您可能想要添加一些ORDER BY子句。要在PHP中执行这些查询,我建议使用reading the manual。如果你有任何具体的问题,然后你可以张贴一个新的问题。
发布于 2010-08-23 03:57:54
第一个查询将如下所示
"select title, pic_title , pic_brief from table_name order by post_id desc limit 0 , 3"剩下的五个将会是
"select title, pic_title from table_name order by post_id desc limit 3 , 5"第二次查询将排除第一次查询返回的三个结果...
如果您想要更完美,您可以收集第一个查询返回的所有三个IN,并可以在第二个查询中添加NOT in。
"select title, pic_title from table_name where post_id not in (1,2,3) order by post_id desc limit 0 , 5";https://stackoverflow.com/questions/3543064
复制相似问题