我正在编写博客文章的某种东西,作者将发布文章,它将显示在前端,我的问题开始选择帖子,因为我必须满足发布新闻的某些条件前端,
我在数据库中有4个字段,即
title
pic_title
pic_brief
pic_detail
你猜对了,除了标题表之外,其余的三个将保存varchar数据类型中的图像的路径,这将用于显示为帖子,前端的格式是这样的
a)总共会有八个帖子 显示在前端(八 来自数据库的条目)
b)顶部会有三个帖子,其中包含来自的值 表标题,pic_title和 pic_brief(共3个值)
c)其余五个将仅包含标题和pic_title (不包括顶部的三个条目) 请注意:我希望第二个查询排除前3个记录 它已经存在于顶层,即 (第一个查询= 3个帖子降序 order,second query = 8 - first 3 = 5 交)
我想要的帖子顺序是由id DESC
编辑:我把第一个查询作为
SELECT * FROM news ORDER BY id DESC LIMIT 3
现在,如果我采用相同的第二个查询并尝试再次按desc顺序填充值,则将访问相同的记录
简单来说,我想要一个将通过id DESC跳过最后三个记录的查询
我如何在PHP中实现这一壮举?
答案 0 :(得分:5)
如果你只是想要SQL,那么它就是:
第一次查询
SELECT * FROM `table` LIMIT 3
第二次查询
SELECT * FROM `table` LIMIT 3,5
(其中table
是您的表的名称。当然您可能想要添加一些ORDER BY
子句。要在PHP中执行这些查询,我建议reading the manual。这样做之后你有任何具体问题,然后你可以发一个新问题。
答案 1 :(得分:2)
在这种情况下,我可能会选择一次选择所有8条记录 - 数据库访问次数越少越好。
SELECT t.title,
t.pic_title,
t.pic_brief
FROM TABLE t
ORDER BY t.id DESC
LIMIT 8
...因为剩下的只是演示文稿:
$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;
}
答案 2 :(得分:1)
第一个查询将是这样的
"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"
第二个查询将排除第一个查询返回的三个结果...
如果你想要更完美,你可以收集第一个查询返回的所有三个ID,并可以在第二个查询中添加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";