zoukankan      html  css  js  c++  java
  • MYSQL的group by笔记

         对应的表数据如下

        

        现在的需求是要找出dcid为9951,9957,9064共同拥有的good_code。

        第一种方案是

      SELECT
        a.good_code
      FROM
      (
        SELECT
          good_code
        FROM
        XXX
        WHERE
          dcid = '9951'
      ) a
      INNER JOIN (
        SELECT
          good_code
        FROM
        XXX
        WHERE
          dcid = '9957'
      ) b ON a.good_code = b.good_code

      INNER JOIN (

        SELECT
          good_code
        FROM
        XXX
        WHERE
          dcid = '9064'

      ) c ON a.good_code = c.good_code;

    第一种方案的思路是先分别找出表中dcid为9951,9957,9064的记录,然后把这些记录作内连接,这样的做法可以得到正确的结果,但是非常耗时,耗费的时间是0.3秒左右。

    ==================分割线=============

    第二种方案是

      SELECT good_code from XXX  where dcid in ('9951','9957','9064') GROUP BY good_code HAVING count(good_code)=3

    第二种方案的思路是先筛选出dcid为9951,9957,9064的记录,然后对筛选后的记录用good_code进行分组group by good_code,并对分组后的记录进行筛选HAVING count(good_code)=3,这里的count(good_code)是对同样的good_code进行计数,则我们可以判断当good_code的计数为3(也就是good_code有3条记录,分别对应9951,9957,9064)的就是符合我们要找的,此种sql耗费的时间是0.05秒左右,缩短了查询需要的时间。

  • 相关阅读:
    第四周作业
    第三周作业
    第二周基础作业
    抓老鼠
    币值转换
    打印沙漏
    秋季学期学习总结
    2019春第七周作业
    2019春第六周作业 学习总结
    第五周作业总结以及学习总结
  • 原文地址:https://www.cnblogs.com/wuyouwei/p/6522863.html
Copyright © 2011-2022 走看看