zoukankan      html  css  js  c++  java
  • exists关键词和case表达式

    首先声明一下,existcase没有必然联系,这里只是为了一起整理个笔记。

    EXIST谓词

    如果存在对应的记录,返回TRUE。否则,返回FALSE。*实际使用中,即使不适用exist,基本也可以使用in或者not in来代替。

    示例:

    select shohin_mei ,hanbai_tanka from Shohin as S
    where exists
    ( select * from TenpoShohin as TS 
      where TS.tenpo_id = '000C' and TS.shohin_id = S.shohin_id);
    

    通过这个例子发现:exist通常会使用关联子查询作为参数。

    当然,用in代替:(更容易理解)

    select shohin_mei,hanbai_tanka from Shohin
    where shohin_id in 
    ( select shohin_id from TenpoShohin where tenpo_id = '000C');
    

    case表达式

    语法:

    case when <判断表达式> then <表达式>
        when <判断表达式> then <表达式>
        when <判断表达式> then <表达式>
        when <判断表达式> then <表达式>
        ...
        else <表达式>
    end;
    

    从语法中可以发现,类似于c等高级语言的switch语法。

    示例:

    select shohin_mei,
      case when shohin_bunrui='衣服' then concat('A:',shohin_bunrui)
      when shohin_bunrui = '办公用品' then  concat('B:',shohin_bunrui)
    	when shohin_bunrui = '厨房用具' then concat('C:',shohin_bunrui)
    	else null
      end 
    	as abc_shohin_bunrui
    from Shohin;
    

    所以,我们发现,case语句可以写在任意位置。

    这里再看一个用法,用group by按照种类得到商品的和(行输出)。case语句,可以实现列输出。

    select shohin_bunrui,sum(hanbai_tanka) as sum_tabka 
    from Shohin
    group by shohin_bunrui;
    
    #接下来是case语句实现按类列输出
    select sum(case when shohin_bunrui = '衣服' then hanbai_tanka else 0 end) as sum_tabka_ihuku,
      sum(case when shohin_bunrui = '厨房用具' then hanbai_tanka else 0 end) as sum_tabka_ihuku,
    	sum(case when shohin_bunrui = '办公用品' then hanbai_tanka else 0 end) as sum_tabka_ihuku
    from Shohin;
    

    (原始数据集:

    0002	打孔器	办公用品	500	320	2009-09-11
    0003	运动T恤	衣服	4000	2800	
    0004	菜刀	厨房用具	3000	2800	2009-09-20
    0005	高压锅	厨房用具	6800	5000	2009-01-15
    0006	叉子	厨房用具	500		2009-09-20
    0007	擦菜板	厨房用具	880	790	2008-04-28
    0008	圆珠笔	办公用品	100		2009-11-11
    

    )


    欢迎进一步交流本博文相关内容:

    博客园地址 : http://www.cnblogs.com/AsuraDong/

    CSDN地址 : http://blog.csdn.net/asuradong

    也可以致信进行交流 : xiaochiyijiu@163.com

    欢迎转载 , 但请指明出处  :  )


  • 相关阅读:
    常见cout格式输出
    P3332 [ZJOI2013]K大数查询
    pdb
    OS
    ubuntu su failure when password was right
    【opencv安裝】ubuntu16 opencv安装+测试
    shell脚本读取文件+读取命令行参数+读取标准输入+变量赋值+输出到文件
    xshell上传下载文件
    【sed / awk脚本编写】
    shell正则式解析身份证和手机号
  • 原文地址:https://www.cnblogs.com/AsuraDong/p/7324621.html
Copyright © 2011-2022 走看看