zoukankan      html  css  js  c++  java
  • MYSQL-----流程控制 if() 函数的用法

      语法:IF(condition,result,result)

         如果函数的第一个参数中给定的condition符合条件(如,condition不等于0或者不为NULL),那么函数的执行结果为第二个参数中给定的result值,反之,如果第一个参数中的condition值确实等于0或者为NULL,该函数将返回第三个参数中给定的result值,注意,condition的值被替换成了整数值,因此,当试图匹配字符串或者浮点值时,请事情比较运算符。

    示例:有一张用户表,里面有3个字段,分别是uuid,mobile,age,如何用SQL写出age=12,age=46,其余的age归类均默认等于9的查询语句

    要求:#将此查询结果进行age的分类统计,预期结果:12是1个,46是1个,其余的age归类均默认等于9的是2个#

    select uuid,mobile,count(age) as "统计",
    if(age=12,12,
      if(age=46,46,9
    )
    )as age0 from user where mobile="53437569" group by age0;

    #注意取as后面的别名,避免取与数据库中存在字段名称相同的命名,否则会导致系统自己都不知道取哪个字段进行解析,我就犯了这个错age0之前写的是age
    
    

     

     若需要更多年龄的计算,则依此类推:

      select uuid,count(age) as "统计",
      if(age=46,46,
        if(age=40,40,
          if(age=88,88,1)
      ))as age0
      from user
      group by age0;

    注:《mysql核心技术手册》中有关这节讲解的一个示例,粘贴此处供自己后期参考

    SELECT clients.client_id AS ID,

    CONCAT(name_first, SPACE(1), name_last) AS Client,

    telephone_home AS Telephone, SUM(qty) AS Shares,

    IF(

      (SELECT SUM(qty * price)

        FROM investments, stock_prices

        WHERE stock_symbol = symbol

        AND client_id = ID )

        > 100000, 'Large', 'Small') AS 'Size'

    FROM clients, investments

    WHERE stock_symbol = 'GT'

    AND clients.client_id = investments.client_id

    GROUP BY clients.client_id LIMIT 2;

     

     

     

     

  • 相关阅读:
    八、比卦
    七、师卦
    六、讼卦
    五、需卦
    力扣-两数之和
    什么是3NF (范式) ?
    SQL事务4个特性
    什么是索引?
    假设把只包含01的数组(如{0,0,1,1,1,0,1,0,0,1})按照升序排序,可以任意交换两个数的位置,请输出最少需要交换的次数。
    找规律并用编程实现如下数列(数值超过10000停止打印) 1,1,2,2,3,2,5,4,8,8
  • 原文地址:https://www.cnblogs.com/syw20170419/p/10212095.html
Copyright © 2011-2022 走看看