zoukankan      html  css  js  c++  java
  • mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数

    查询时都会遇到去除重复问题和统计总记录数的问题,所以总结下来,下次就要运用喔。(*^__^*) 嘻嘻……
     1、mysql中去除重复数据,使用distinct,将其放在查询字段首位或者是最后一位都会出错,要与关键字 group by 分组来结合使用。
    并且distinct field 要在查询字段首位, group by 字段放在sql语句之后。
    例如:
    select distinct userid,username,url,userid,title,catid,inputtime
           FROM nmsg_webyp_product
            WHERE username ='$q' or username like '%$q%' or username like '%$q' group by userid
    2、MySQL中有两个函数来计算上一条语句影响了多少行
    (1) 通常mysql 获取查询记录数我们使用如下语句 
      SELECT COUNT(*) FROM users WHERE k='avs';        
    或者是
      select count(id) from user where username ='lili';
    或者是
      select count(1) from user where username ='lili';
    或者是   SELECT id FROM goods WHERE username='lili' LIMIT 10;
    (2)统计查询的总记录数,还可以用mysql中的 FOUND_ROWS  函数来统计,例如:
       $sql = "SELECT SQL_CALC_FOUND_ROWS
              s.data ,c.companyname,p.title,p.inputtime,p.url,p.username
                     FROM
                       `nmsg_webyp_company` c
                     left JOIN nmsg_webyp_product p ON p.userid = c.userid
                     right join nmsg_websearch s on s.id = p.id
                     WHERE
                       c.companyname = '$q'
                        OR c.companyname LIKE '%$q'
                         OR c.companyname LIKE '%$q%'
                         OR s.data = '$q'
                         OR s.data LIKE '$q%'
                         OR s.data LIKE '%$q%'
                     GROUP BY
                         c.userid";
    $seaQuery = mysql_query($sql);
    $seaQuery = mysql_query("SELECT FOUND_ROWS() as total");
    此处如果是 SELECT FOUND_ROWS(),得到的结果如下,所以用另用别名容易获取,少些失误。
    Array
    (
        [FOUND_ROWS()] => 4
    )
    // 从结果集取得的一行作为关联数组
    $getTotal = mysql_fetch_array($seaQuery,MYSQL_ASSOC);
    $data = array();
    while ($res = mysql_fetch_array($comQuery,MYSQL_ASSOC)) {
      $data[] = $res;
    }

    // 取出总记录数
    $total = $getTotal['total'];
    当使用其他的框架,还没有熟悉其中封装好的mysql 语句和函数时,就可以很方便使用它了,~~~~ 嘻嘻~~~

    至于 FOUND_ROWS() 和count() 的效率问题,还没有去多次测试效率对比问题。



  • 相关阅读:
    vue动态组件
    服务端渲染和nuxt简单介绍
    nuxt Window 或 Document未定义解决方案
    知乎专栏开放性api
    小程序的一些坑
    搭建微服务器(续)
    调研pwa和sw
    mysql索引原理以及优化
    装饰器
    斐波那契数列和小青蛙跳跳跳问题
  • 原文地址:https://www.cnblogs.com/enxixi/p/3783462.html
Copyright © 2011-2022 走看看