SQL求差集
2015-07-24 14:52
513 查看
数据库环境:SQL SERVER 2008R2Sql Server有提供求集合差集的函数——EXCEPT。先看看EXCEPT的用法,
方法1和方法2本质上是一样的思路,只不过写法不同而已。我们来看下结果(本文完)
{ <query_specification> | ( <query_expression> ) } { EXCEPT } { <query_specification> | ( <query_expression> ) } 从 EXCEPT 操作数左边的查询中返回右边的查询未返回的所有非重复值。 上面是摘自MSDN对EXCEPT函数的用法介绍。 在这里,我们的要求有点特别,集合B中存在多少条集合A的记录,那么,在集合A中剔除集合B中对应的记录条数。 假如A表有数据如下: id name 1 a 1 a 2 b B表数据如下: id name 1 a 3 c 根据需求,B表中有一条记录和A表有重复,因此,在A表中,把该重复记录的一条去掉, 结果数据如下: id name 1 a 2 b 需求已经清晰了,现在开始来实现实现的方法是:分别给a表和b表的重复记录编号, 只要在b表中存在和a表编号、id、name一样的记录,即在a表进行过滤。 先准备基础数据
SELECT id , NAME FROM ( SELECT id , ROW_NUMBER() OVER ( PARTITION BY id, NAME ORDER BY id ) AS nid , NAME FROM a EXCEPT SELECT id , ROW_NUMBER() OVER ( PARTITION BY id, NAME ORDER BY id ) AS nid , NAME FROM b ) aView Code
方法1和方法2本质上是一样的思路,只不过写法不同而已。我们来看下结果(本文完)
相关文章推荐
- 安装 SQL Server 客户端驱动程序
- SQLSERVER删除表名包含XX的所有表
- xtrabackup 热备 mysql
- 深入理解Memcached原理
- 多台主机搭建redis集群
- Oracle使用imp导入dmp数据提示:只有DBA才能导入有其他DBA导入的文件
- SQLserver字符串分割函数
- 【MySQL】解决windows下mysql匿名登陆无法使用mysql数据库的问题
- Mysql 二进制日志
- 数据库系统原理
- SQL 2008评估期已过
- mysql的jdbc大量数据操作记录
- Mongodb Replica Sets 副本集架构实战 --个人记录
- ServiceStack.Redis 使用
- Mysql中的Cascade ,NO ACTION ,Restrict ,SET NULL
- mysql 下 计算 两点 经纬度 之间的距离(转)
- SQL Server 锁表、查询被锁表、解锁相关语句
- mysql union和union all 的区别以及使用
- Redis 配置文件说明
- wxSqlite给sqlite数据库添加口令