zoukankan      html  css  js  c++  java
  • mysql sql记录

    1.如何在同一个查询中统计同一个列的不同值的数量,以减少查询的语句量。

    例如,假设可能需要通过一个查询返回不同层级的列表菜单数量,可以通过以下语句进行查询:

    select SUM(IF(functionlevel='0',1,0)) as 第一级,SUM(IF(functionlevel='1',1,0)) as 第二级,
    SUM(IF(functionlevel='2',1,0)) as 第三级, SUM(IF(functionlevel='3',1,0)) as 第四级, SUM(IF(functionlevel='4',1,0)) as 第五级
    , SUM(IF(functionlevel='5',1,0)) as 第六级 from t_s_function

    或者:

    select SUM(functionlevel='0') as 第一级,SUM(functionlevel='1') as 第二级,
    SUM(functionlevel='2') as 第三级, SUM(functionlevel='3') as 第四级, SUM(functionlevel='4') as 第五级
    , SUM(functionlevel='5') as 第六级 from t_s_function

    还可以采用以下语句查询:

    select COUNT(functionlevel='0' or null) as 第一级,COUNT(functionlevel='1' or null) as 第二级,
    COUNT(functionlevel='2' or null) as 第三级, COUNT(functionlevel='3' or null) as 第四级, COUNT(functionlevel='4' or null) as 第五级
    , COUNT(functionlevel='5' or null) as 第六级 from t_s_function

    变形:

    select count(*),functionlevel from t_s_function GROUP BY functionlevel

    2.如何在一张表中根据某个字段进行分组,并取该字段同值时的最新或最久的数据。

     例如:有如下数据:

    现要根据code字段进行分组,即只获取code值相同的一条记录,且该记录的in_repertory_date字段要在同code值的记录中是最小的。希望的数据如下所示:

    那么该sql如下所示即可实现该功能:

    select
    * 
    from
    materiel_bank_account,
    (select
    * 
    from
    (select
    min(in_repertory_date)as min_time 
    from
    materiel_bank_account 
    GROUP BY
    code) temp 
    GROUP BY
    min_time) a 
    where
    in_repertory_date = a.min_time 
    order by
    in_repertory_date desc
    

      

  • 相关阅读:
    Dreamweaver中SourceAnyWhere的使用
    访问被拒绝:“AjaxPro”的解决方案
    NDoc1.3.1使用手册
    程序中操作Excel
    模拟提交程序相关专题
    利用SMTP服务发送电子邮件
    如何使用树形控件
    GDI+简单使用例子
    程序中操作Word
    签名工具使用介绍
  • 原文地址:https://www.cnblogs.com/Aaronqcd/p/9564838.html
Copyright © 2011-2022 走看看