首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql select语句和限制记录数

mysql select语句和限制记录数
EN

Stack Overflow用户
提问于 2010-08-23 03:45:10
回答 3查看 140关注 0票数 0

我正在编写一个博客文章之类的东西,其中作者将发布文章并将其显示在前端,我的问题开始于选择帖子,因为我必须满足在前端发布新闻的某些条件。

我在数据库中有4个字段,即

代码语言:javascript
复制
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

编辑:我把第一个查询当作

代码语言:javascript
复制
SELECT * FROM news ORDER BY id DESC LIMIT 3

现在,如果我执行相同的第二个查询,并再次尝试按降序填充值,则将访问相同的记录

简而言之,我想要一个查询,它将跳过最后三个记录,按id排序

如何在PHP中实现这一壮举?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-23 04:10:24

在这种情况下,我可能会选择一次选择所有8条记录-访问数据库的次数越少越好。

代码语言:javascript
复制
  SELECT t.title,
         t.pic_title,
         t.pic_brief
    FROM TABLE t
ORDER BY t.id DESC
   LIMIT 8

...because剩下的只是演示:

代码语言:javascript
复制
$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
EN

Stack Overflow用户

发布于 2010-08-23 03:52:14

如果您只是想要SQL,那么它就是:

第一个查询

代码语言:javascript
复制
SELECT * FROM `table` LIMIT 3

第二个查询

代码语言:javascript
复制
SELECT * FROM `table` LIMIT 3,5

(其中table当然是您的表名。当然,您可能想要添加一些ORDER BY子句。要在PHP中执行这些查询,我建议使用reading the manual。如果你有任何具体的问题,然后你可以张贴一个新的问题。

票数 5
EN

Stack Overflow用户

发布于 2010-08-23 03:57:54

第一个查询将如下所示

代码语言:javascript
复制
"select title, pic_title , pic_brief from table_name order by post_id desc limit 0 , 3"

剩下的五个将会是

代码语言:javascript
复制
"select title, pic_title from table_name order by post_id desc limit 3 , 5"

第二次查询将排除第一次查询返回的三个结果...

如果您想要更完美,您可以收集第一个查询返回的所有三个IN,并可以在第二个查询中添加NOT in。

代码语言:javascript
复制
"select title, pic_title from table_name where post_id not in (1,2,3) order by post_id desc limit 0 , 5";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3543064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档