代码之家  ›  专栏  ›  技术社区  ›  Ibrahim Azhar Armar

mysql select语句和限制记录数

  •  0
  • Ibrahim Azhar Armar  · 技术社区  · 15 年前

    我在写一篇博客文章,作者会把文章发到前端,我的问题从选择文章开始,因为我必须满足在前端发布新闻的条件,

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

    title
    pic_title
    pic_brief
    pic_detail
    

    a) 一共有八个职位 显示在前端(八个

    b) 顶部将有三个帖子,其中包括 图片摘要(共3个值)

    c) 剩下的五个将只包含标题和图片标题 (不包括top的三个条目) 请注意:我希望第二个查询排除前3个记录 (第一个查询=降序中的3个帖子) 顺序,第二个查询=8-第一个3=5

    我要的帖子的顺序是按id描述的

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

    SELECT * FROM news ORDER BY id DESC LIMIT 3
    

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

    简单地说,我需要一个查询,它将跳过最后三条记录order by id DESC

    3 回复  |  直到 13 年前
        1
  •  2
  •   OMG Ponies    15 年前

    在这种情况下,我可能会选择同时选择所有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
  •  5
  •   Michael Mior    15 年前

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

    第一个查询

    SELECT * FROM `table` LIMIT 3
    

    第二个查询

    SELECT * FROM `table` LIMIT 3,5
    

    (其中 table ORDER BY 条款。要在PHP中执行这些查询,我建议 reading the manual . 如果你有任何具体的问题后,这样做,然后你可以张贴一个新的问题。

        3
  •  1
  •   Maulik Vora    15 年前

    第一个查询如下

    "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。

    "select title, pic_title from table_name where post_id not in (1,2,3) order by post_id desc limit 0 , 5";