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集合运算参考及案例(一):列值分组累计求和
概述 目前企业应用系统使用的大多数据库都是关系型数据库,关系数据库依赖的理论就是针对集合运算的关系代数.关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式.不过我们在工作中发现,很多人 ...
随机推荐
- 【转一篇出处不明的文章】 Windows多线程通信方式
多线程通信的方法主要有以下三种: 1.全局变量 进程中的线程间内存共享,这是比较常用的通信方式和交互方式.注:定义全局变量时最好使用volatile来定义,以防编译器对此变量进行优化. 2.Messa ...
- VS版本与系统不兼容问题
1.VS2012在win7 64位系统安装快结束时报出一个不兼容的错误. 2.这种情况官方给出解决方法: http://www.microsoft.com/en-us/download/details ...
- vs installer 将.net framework 集成到安装包中
Missing .NET Framework 4.0 in Visual Studio 2017 Prerequisites whenhttps://stackoverflow.com/questio ...
- 在QT中用git做版本管理时遇到的一些问题
1. 安装git sudo apt-get install git 2. 安装gitk sudo apt-get install gitk 要提交代码,点击 工具->git->local ...
- Day 11 函数名,闭包,装饰器. +作业
'''一.函数名.def func(): print(5555)print(func)#输出结果 <function func at 0x026B5E88> 打印函数地址. # 1. 函数 ...
- series dataframe 的 idxmax()
返回最大值的索引
- fastAdmin根据状态显示是否显示操作按钮
根据状态决定是否显示某个操作按钮 代码如下:
- elasticsearch中 refresh 和flush区别
elasticsearch中有两个比较重要的操作:refresh 和 flush refresh操作 当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索.而这个实时建索引并可以 ...
- Java并发工具类之CountDownLatch
CountDownLatch允许一个或则多个线程等待其他线程完成操作. 假如我们有这样的需求:我们需要解析一个excel文件中的多个sheet,我们可以考虑使用多线程,每一个线程解析excel中的一个 ...
- Hector 入门
导入jar包 为了能够使用hector操作Cassandra数据库,首先导入hector的jar包,注意根据实际情况修改版本号 <dependency> <groupId>me ...