exists关键词和case表达式
首先声明一下,
exist和case没有必然联系,这里只是为了一起整理个笔记。
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
欢迎转载 , 但请指明出处 : )
exists关键词和case表达式的更多相关文章
- SQL基础学习_05_函数、谓词、CASE表达式
函数 算术函数 1. 四则运算: +.-.*./ 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...
- DML数据操作语言之谓词,case表达式
谓词:就是返回值是真值的函数. 前面接触到的“>” “<” “=”等称为比较运算符,它们的正式名称就是比较谓词.因为它们比较之后返回的结果是真值. 由于谓词 返回的结果是一个真值 ,即tr ...
- 《SQL 基础教程》第六章:函数、谓词、CASE 表达式
函数是 SQL 中的一部分.在 SQL 中,除了普通的函数之外,还有特殊的函数(谓词和 CASE 表达式)用于各种情况. 函数 函数的种类有: 算术函数 字符串函数 日期函数 转换函数(用于转换数据类 ...
- 6 SQL 函数、谓词、CASE表达式
6 函数.谓词.CASE表达式 6-1 各种各样的函数 /* 所谓函数,就是输入某一值得到相应输出结果的功能.输入值称为参数(parameter),输出值称为返回值. 函数大致可以分为以下几种 : 算 ...
- SQL Server case表达式的用法
★CASE表达式是一个标量表达式,它基于条件逻辑来返回一个值.因为CASE是一个标量表达式,所以它可以应用在SELECT.WHERE.HAVING以及ORDER BY子句中. CASE表达式有两种格式 ...
- CASE表达式的使用
我们在开发过程中,经常需要针对一列,基于条件逻辑来返回一个值,那么,这时候就需要使用到CASE表达式了. 例如,以下对Products表的查询就在SELECT语句中使用了CASE表达式,以生成用于描述 ...
- SQLServer学习笔记<>日期和时间数据的处理(cast转化格式、日期截取、日期的加减)和 case表达式
日期和时间数据的处理. (1)字符串日期 ‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期.例如,查询订单表日期大于‘20080301’.可以这样写: 1 se ...
- Sql 基于列的Case表达式
Case表达式可以用在 Select,update ,delete ,set,in,where ,order by,having子句之后, 只是case表达式不能控制sql程序的流程,只能作为基于列的 ...
- 使用CASE表达式替代SQL Server中的动态SQL
原文:使用CASE表达式替代SQL Server中的动态SQL 翻译自: http://www.mssqltips.com/sqlservertip/1455/using-the-case-expre ...
随机推荐
- 【HDU 5698】 瞬间移动
[题目链接] 点击打开链接 [算法] 用f[i][j]表示走到(i,j)这个位置有多少种方案,因为走到(i,j)这个位置,上一步一定在它左上角的矩形中,所以, f(i,j) = sigma( f(x, ...
- bzoj4810
http://www.lydsy.com/JudgeOnline/problem.php?id=4810 问题就在于怎么快速查询 我们先用莫队转移,但是没办法快速地查询,那么我们就用bitset这个东 ...
- ubuntu 16.04 Python Anaconda 安装
Python Anaconda 不同版本在官网上的位置:https://www.anaconda.com/download/#linux 进入官网=>Changelog=>Product ...
- LD_LIBRARY_PATH设置问题
今天突然遇到设置LD_LIBRARY_PATH的问题,,发现在.bashrc和/etc/profile中添加 exportLD_LIBRARY_PATH = path_name:$LD_LIBRARY ...
- SQLServer 存储过程 SET NOCOUNT { ON | OFF } 的使用
在JDBC中调用 sql server 的存储过程时“该语句没有返回结果集”异常: 解决方法:在存储过程首行加上 SET NOCOUNT ON 使返回的结果中不包含有关受 Transact-S ...
- bzoj 1621: [Usaco2008 Open]Roads Around The Farm分岔路口【dfs】
模拟就行--讲道理这个时间复杂度为啥是对的??? #include<iostream> #include<cstdio> using namespace std; int k, ...
- JS自定义右键菜单案例
要求:点击页面鼠标右键,阻止默认右键菜单的弹出,并弹出自定义右键菜单. 效果示例: 参考代码: <!DOCTYPE html> <html lang="zh-CN" ...
- 《Maven实战》(许晓斌)导读(读书笔记&第二次读后感)
第一章 Maven简介 Maven是构建工具,但同时还是jar包管理工具.项目信息管理工具 与Make.Ant比较,更为先进 第二章 Maven的安装和配置 Windows和Unix上安装都很简单,下 ...
- Android 性能优化(24)*性能工具之「Traceview,dmtracedump」Profiling with Traceview and dmtracedump :记录并查看函数调用栈*
Profiling with Traceview and dmtracedump In this document Traceview Layout Traceview工具界面介绍 T ...
- golang 并发锁的陷阱
错误代码示例 package main import ( "sync" "strconv" "fmt" ) type Node struct ...