美文网首页
Mysql注意的点

Mysql注意的点

作者: 番茄酱的汪 | 来源:发表于2020-02-27 22:29 被阅读0次

    一、字符串还是数字?

    • 注意有些字段看上去像数值型,但是其实是字符串字段,所以会用例如MAX(),MIN(),WHERE a>b等比较型函数或者语句,但是这样是不对的。
      例如,14<9等
      例如,我之前用两个看上去像日期值但是实际是字符串或者数值的去做比较,是错误的。
    • 解决方法:
    select max(a+0)
    
    日期的可以用转换函数:STR_TO_DATE(a,'%y%m%d')
    

    二、现聚合再计数:

    • 如果要计算某个维度下的客户数,不要直接用
    select goods_category,count(distinct cos_name) from table
    

    因为用distinct非常的慢,全表都需要去重,针对一个很庞大的数据库是很不友好的

    • 解决方法:
      利用子表
    Select goods_category,count(1) as a from (select goods_category,cos_name from tablegroup by cos_name,goods_category)
    group by goods_category
    

    首先先用子表聚合一次,你需要的两个字段:goods_category、cos_name,这样就已经筛选出来不重复的项;
    然后再单独聚合一次,用count(1)去计数需要count的值。
    这里count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
    关于count(1):https://blog.csdn.net/haijiege/article/details/85006780

    相关文章

      网友评论

          本文标题:Mysql注意的点

          本文链接:https://www.haomeiwen.com/subject/vvyfhhtx.html