SQL 集合例子
IF OBJECT_ID('tempdb..#Purchase', 'U') IS NOT NULL
DROP TABLE #Purchase;
CREATE TABLE #Purchase
(
PurchaseID INT IDENTITY(1, 1) ,
CustomerID INT ,
ProductCode CHAR(1) PRIMARY KEY CLUSTERED ( PurchaseID )
);
INSERT INTO #Purchase
( CustomerID ,
ProductCode
)
SELECT 1 ,
'A'
UNION ALL
SELECT 1 ,
'B'
UNION ALL
SELECT 2 ,
'A'
UNION ALL
SELECT 2 ,
'B'
UNION ALL
SELECT 2 ,
'D'
UNION ALL
SELECT 3 ,
'A'
UNION ALL
SELECT 3 ,
'B'
UNION ALL
SELECT 3 ,
'D'
UNION ALL
SELECT 3 ,
'A'
UNION ALL
SELECT 3 ,
'D'
UNION ALL
SELECT 4 ,
'A'
UNION ALL
SELECT 4 ,
'B'
UNION ALL
SELECT 4 ,
'C'
UNION ALL
SELECT 5 ,
'A'
UNION ALL
SELECT 5 ,
'B'
UNION ALL
SELECT 5 ,
'A'
UNION ALL
SELECT 5 ,
'B'
UNION ALL
SELECT 5 ,
'C'
UNION ALL
SELECT 5 ,
'D'
UNION ALL
SELECT 6 ,
'A'
UNION ALL
SELECT 6 ,
'A'
UNION ALL
SELECT 6 ,
'D'
UNION ALL
SELECT 6 ,
'E'
UNION ALL
SELECT 7 ,
'B'
UNION ALL
SELECT 7 ,
'B'
UNION ALL
SELECT 7 ,
'D'
UNION ALL
SELECT 7 ,
'E'
UNION ALL
SELECT 8 ,
'A'
UNION ALL
SELECT 9 ,
'B';
SELECT a.CustomerID ,
a.PurchaseID ,
a.ProductCode
FROM #Purchase a
WHERE ProductCode IN ( 'a', 'b' )
AND NOT EXISTS ( SELECT *
FROM #Purchase b
WHERE a.CustomerID = b.CustomerID
AND ProductCode NOT IN ( 'a', 'b' ) );
SELECT a.CustomerID ,
a.PurchaseID ,
a.ProductCode
FROM #Purchase a
WHERE CustomerID IN (
SELECT CustomerID
FROM #Purchase b
WHERE ProductCode IN ( 'a', 'b' )
GROUP BY CustomerID
HAVING COUNT(DISTINCT ProductCode) = ( SELECT COUNT(DISTINCT ProductCode)
FROM #Purchase c
WHERE c.CustomerID = b.CustomerID
) );
SELECT CustomerID
FROM #Purchase
WHERE ProductCode IN ( 'A', 'B' )
GROUP BY CustomerID
HAVING COUNT(DISTINCT ProductCode) = 2
EXCEPT
--===== Find Customers that bought "C".
SELECT CustomerID
FROM #Purchase
WHERE ProductCode IN ( 'C' );
SELECT *
FROM #Purchase;
SQL 集合例子的更多相关文章
- sql 游标例子 根据一表的数据去筛选另一表的数据
sql 游标例子 根据一表的数据去筛选另一表的数据 DECLARE @MID nvarchar(20)DECLARE @UTime datetime DECLARE @TBL_Temp table( ...
- SQL存储过程例子
存储过程呢,学校里学习的都是简单的.这里是我在工作的时候写的存储过程,贴出来,其中公司相关我都XXX代替了 (注:这个例子可以算是动态SQL的例子了,写死的是静态SQL,这个很灵活的传入参数的是动态S ...
- 转 SQL集合函数中利用case when then 技巧
SQL集合函数中利用case when then 技巧 我们都知道SQL中适用case when then来转化数据库中的信息 比如 select (case sex when 0 then '男' ...
- 详解SQL集合运算
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...
- SQL集合运算 差集 并集 交
SQL-3标准中提供了三种对检索结果进行集合运算的命令:并集UNION:交集INTERSECT:差集EXCEPT(在Oracle中叫做 MINUS).在有些数据库中对此的支持不够充分,如MySql中只 ...
- 通过反射生成SQL的例子
全文摘自http://www.cnblogs.com/g1mist/p/3227290.html,很好的一个实例. 反射提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑 ...
- 7 SQL 集合运算
7 集合运算 7-1 表的加减法 本章将会和大家一起学习“集合运算”操作.在数学领域,“集合”表示“(各种各样的)事物的总和”:在数据库领域,表示“记录的集合”.具体来说,表.视图和查询的执行结果都是 ...
- SQL集合函数中利用case when then 技巧
我们都知道SQL中适用case when then来转化数据库中的信息 比如 select (case sex when 0 then '男' else '女' end) AS sex from ...
- SQL集合运算参考及案例(一):列值分组累计求和
概述 目前企业应用系统使用的大多数据库都是关系型数据库,关系数据库依赖的理论就是针对集合运算的关系代数.关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式.不过我们在工作中发现,很多人 ...
随机推荐
- Linux Mint 楷体问题
很多人都遇见过刚装完的 Linux Mint 界面字体是黑体,然后莫名其妙就变成楷体的问题. 先不说技术层面的原因,只说怎么解决. 造成这种情况,多数是安装输入法或其他某种软件的时候,同时安装了 AR ...
- C#——调用C++的DLL 数据类型转换
/C++中的DLL函数原型为 //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsig ...
- netcore 发布 到 windows server IIS 可能会报错
当发布netcore 到windows server iis可能会报这种错:An error occurred while starting the application 不要慌,这个时候可能是你用 ...
- 第三节:使用Log4net和过滤器记录异常信息,返回异常给前端
上次面试,遇到,在项目中如何处理业务异常和代码异常,使用txt记录异常信息后,如何直接区分出异常的类型,异常怎么分类处理,希望大家能帮我提出宝贵的意见,完善处理异常, 统一返回参数 public cl ...
- pageadmin CMS网站建设教程:如何修改用户密码?
pageadmin CMS网站建设教程: 当我们想修改密码,该如何修改呢? 1. 首先,登录会员中心,会员中心的地址是在网址后面加上/member/login: 2. 例:我的网站地址是localho ...
- Mysql-基础+安装指南
安装指南: https://www.cnblogs.com/majj/p/9160383.html 小马哥 下载完后初始化操作数据库: 1. 将文件放在 : G:\软件\mysql-8.0.15-w ...
- Statement与PreparedStatement区别
1.性能区别 Statement statement = conn.createStatement(); PreparedStatement preStatement = conn.prepareSt ...
- git code 初次上传
http://blog.csdn.net/hanhailong726188/article/details/46738929 1 cd到当前项目的跟目录 执行 git init 2 将当前项目的所有文 ...
- Map-560. Subarray Sum Equals K
Given an array of integers and an integer k, you need to find the total number of continuous subarra ...
- git 常用命令(不定期更新)
过程写写吧,总是忘记.1,在一个文件夹下 键入 git init ,使之成为Git可以管理的仓库.2,编写一个文件readme.txt.3,把文件添加到仓库 git add readme.txt4,把 ...