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秒左右,缩短了查询需要的时间。

  • 相关阅读:
    git warning: LF will be replaced by CRLF in 解决办法
    今天买了个pro,开始ios开发
    基于pyspark的mapreduce实现
    正则表达式中全部符号作用及解释
    CNN
    tensorboard使用及tensorflow各层权重系数输出
    DeepFM tensorflow实现
    FM详解
    sklearn计算auc需要注意的点
    矩阵压缩存储(可用于FM算法中的稀疏矩阵存储)
  • 原文地址:https://www.cnblogs.com/wuyouwei/p/6522863.html
Copyright © 2011-2022 走看看