如何限制" SELECT"结果如何?

时间:2016-05-06 21:39:19

标签: php mysql sql

我有下一个代码,他向用户展示了新的categoires。 问题我不知道如何限制结果并对5个最后的类别进行限制?谢谢!抱歉英文不好。 感谢

   <?php
    $stmt = $pdo->prepare('SELECT * FROM categories');
    $stmt->execute();
    echo $stmt->rowCount();
?>
</span>
</a>

<ul class="dropdown-menu extended notification">
    <li>
        <p>Categories</p>
    </li>

<?php
    if($stmt->rowCount() > 0) {
        foreach($stmt->fetchAll() as $row) {
            $html = '<li>';
            $html .= '<div class="alert alert-info clearfix">';
            $html .= '<span class="alert-icon"><i class="fa fa-flag"></i></span>';
            $html .= '<div class="noti-info">';
            $html .= 'Category #'.$row['CategoryID'].' '.$row['CategoryName'].'';
            $html .= '</div>';
            $html .= '</div>';
            $html .= '</li>';

            echo $html;
        }
    } else {
        $html = '<li>';
        $html .= '<div class="alert alert-danger clearfix">';
        $html .= '<span class="alert-icon"><i class="fa fa-flag"></i></span>';
        $html .= '<div class="noti-info">';
        $html .= '<a href="#"> There are no available categories.</a>';
        $html .= '</div>';
        $html .= '</div>';
        $html .= '</li>';

        echo $html;
    }
?>

2 个答案:

答案 0 :(得分:2)

在您的查询中使用ORDER BYDESCLIMIT,即:

SELECT * FROM categories ORDER BY ColumnNameEx DESC LIMIT 5;
  

ORDER BY

     

在某些情况下,MySQL可以使用索引来满足ORDER BY子句   没有做额外的排序。
  即使ORDER BY与{1}}不匹配,也可以使用索引   索引完全,只要索引的所有未使用部分和所有   额外ORDER BY列是WHERE子句

中的常量

http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

  

DESC

     

默认排序顺序是升序,首先是最小值。至   按反向(降序)顺序排序,将DESC关键字添加到名称中   您要排序的列。

http://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html

  

LIMIT

     

如果您只需要结果集中指定数量的行,请使用a   查询中的LIMIT子句,而不是获取整个结果集   并丢掉额外的数据。

https://dev.mysql.com/doc/refman/5.5/en/limit-optimization.html

答案 1 :(得分:0)

在查询“LIMIT x”的末尾添加,x是您想要获得的结果数量