这篇文章主要介绍了关于用SQL进行集合运算 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

1、比较表和表drop table if exists tbl_a;create table tbl_a(

key1 varchar(10),

col_1 int4,

col_2 int4,

col_3 int4

);insert into tbl_a values('A', 2, 3, 4);

insert into tbl_a values('B', 0, 7, 9);

insert into tbl_a values('c', 5, 1, 6);

drop table if exists tbl_b;create table tbl_b(

key1 varchar(10),

col_1 int4,

col_2 int4,

col_3 int4

);

insert into tbl_b values('A', 2, 3, 4);

insert into tbl_b values('B', 0, 7, 9);

insert into tbl_b values('c', 5, 1, 6);-- ## 如果union a b 行数一致则两张表相等 select count(1) row_cnt from ( select *

from tbl_A union

select * from tbl_b

) tmp

;

直接求两表的不同之处(select * from tbl_a except

select * from tbl_b) union all

(select * from tbl_b except

select * from tbl_a);

2、用差集实现关系除法运算

建表drop table if exists skills;create table skills(

skill varchar(10)

);insert into skills values('oracle');

insert into skills values('unix');insert into skills values('java');drop table if exists empskills;create table empskills(

emp varchar(10),

skill varchar(10)

);insert into empskills values('相田','oracle');

insert into empskills values('相田','unix');

insert into empskills values('相田','java');

insert into empskills values('相田','c#');

insert into empskills values('神奇','oracle');

insert into empskills values('神奇','unix');

insert into empskills values('神奇','java');

insert into empskills values('平井','oracle');

insert into empskills values('平井','unix');

insert into empskills values('平井','PHP');

insert into empskills values('平井','Perl');

insert into empskills values('平井','C++');

insert into empskills values('若田部','Perl');

insert into empskills values('度来','oracle');--把除法变成减法select distinct emp from empskills es1 where not exists

(select skill from skills

expect select skill from empskills es2 where es1.emp = es2.emp);

3、寻求相等的子集drop table if exists supparts;create table supparts(

sup varchar(10),

part varchar(10)

);insert into supparts values('A', '螺丝');

insert into supparts values('A', '螺母');

insert into supparts values('A', '管子');

insert into supparts values('B', '螺丝');

insert into supparts values('B', '管子');

insert into supparts values('C', '螺丝');

insert into supparts values('C', '螺母');

insert into supparts values('C', '管子');

insert into supparts values('D', '螺丝');

insert into supparts values('D', '管子');

insert into supparts values('E','保险丝');

insert into supparts values('E', '螺母');

insert into supparts values('E', '管子');

insert into supparts values('F','保险丝');

思路:

两个供应商都经营同种类型的零件 (简单的按照零件列进行连接)

两个供应商的零件类型数相同(即存在一一映射)(count限定)select a.sup s1, b.sup s2 from supparts a, supparts b where a.sup < b.sup -- 生成供应商的全部组合

and a.part = b.part -- 条件1:经营同种类型的零件

group by a.sup, b.suphaving count(*) = (select count(1) -- 条件2:经营的零件的数量种类相同 a = 中间数 from supparts c where c.sup = a.sup) and count(*) = (select count(1) -- 条件2:经营的零件的数量种类相同 b = 中间数 from supparts d where d.sup = b.sup)

;

4、删除重行drop table if exists products;create table products(

rowid int4,

name1 varchar(10),

price int4

);insert into products values(1,'苹果',50);insert into products values(2,'橘子',100);

insert into products values(3,'橘子',100);insert into products values(4,'橘子',100);

insert into products values(5,'香蕉',80);-- 删除重行高效SQL语句(1):通过EXCEPT求补集delete from productswhere rowid in (select rowid -- 全部rowid from products

except -- 减去 select max(rowid) -- 要留下的rowid from products group by name1, price

);-- 删除重行高效SQL语句(2):通过not indelete from products where rowid not in (select max(rowid) from products group by name1, price

);

练习-- 改进中用union的比较select

case when count(1) = (select count(1) from tbl_A)

and count(1) = (select count(1)+1 from tbl_b)

then count(1) else '不相等' end row_cnt from ( select * from tbl_A union

select * from tbl_b

) tmp

;

内容多来自 《SQL进阶教材》,仅做笔记。练习部分代码均为原创。

mysql集合相加_用SQL进行集合运算相关推荐

  1. 传递集合对象_面试必备——Java集合框架

    Java集合框架面试题 常见集合 集合可以看作是一种容器,用来存储对象信息. 数组和集合的区别: (1)数组长度不可变化而且无法保存具有映射关系的数据:集合类用于保存数量不确定的数据,以及保存具有映射 ...

  2. mysql通过集合查询_连接查询与集合查询

    4.外连接查询 在前面讲述的连接操作中,返回的结果都是满足连接条件的记录.有些时候,开发人员或者用户对于不满足连接条件的部分记录也感兴趣,这个时候就需要使用外连接查询.外连接查询不仅可以返回满足连接条 ...

  3. python两个集合相加_两个集合相加java

    Python常见数据结构整理 Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) ...

  4. linux mysql换成_把 SQL Server 迁移到 Linux?不如换成 MySQL

    (点击上方公众号,可快速关注) 英文:Tony Branson 译者:Linux中国 链接:linux.cn/article-8073-1.html 最近几年,数量庞大的个人和组织放弃 Windows ...

  5. collection集合 网_房地产信托业务(集合)2020年1-9月分析报告

    说明: 1.本次对信托行业57家信托公司房地产信托数据进行分析.数据来源于用益信托网的统计,部分开发商项目的数据.以及分区域的项目数据,信息不全(有些数据为空白).因此,具体项目加总的数据与文中写的总 ...

  6. mysql 游戏背包_用sql实现背包问题

    背包问题是一道经典的组合优化问题,给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,如何选择使得物品的总价格最高,背包问题又可以分成01背包,完全背包和多重背包等,网上关于这个问题的解答有 ...

  7. 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL

    mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...

  8. mysql psm 编程_【SQL】持久性存储模块PSM

    1. 创建PSM函数和过程 创建过程: CREATE PROCEDURE 名字 (参数) 局部声明: 过程体: 创建函数: CREATE FUNCTION 名字 (参数) RETURNS 类型 局部声 ...

  9. sql mysql 删除数据库_在sql中将已建数据库删除的详细步骤

    上期为大家讲解的建立数据库的方法,这期小编为大家讲解在sql中将已建数据库删除的详细步骤,一起去下文看看吧. 今天主要针对的是在SQL Server中已将建立好数据库之后呢!我们这边对建立完毕的数据库 ...

最新文章

  1. Nat. Med. | 制定指导原则以报告AI在临床试验中的使用
  2. BGP基本实验拓扑图--《献给学习的人》
  3. 160个Crackme010
  4. css3 仿aero,让Qt支持Win7的Aero和毛玻璃效果
  5. php5.3升级5.4,centos php 5.3升级到 php5.4版本
  6. Java用户修改密码
  7. 电脑DNS优选网络加速工具 可以提高网速
  8. 比1亿像素还要更厉害!三星Galaxy S11相机应用代码泄露天机...
  9. Spring Boot 细节挖掘(全局异常处理)
  10. VB.Net实现Ftp上传的方法
  11. 一分钟教你解决前端分流问题
  12. 安装Office2010提示缺少MSXML版本6.10.1129.0的解决方法
  13. GitLab 创建项目组及将代码导入项目
  14. 阿里巴巴2017实习面试
  15. BZOJ 4216: Pig
  16. 飞思卡尔S12系列(基于MC9S12XET256MAA和/MC9S12XEP100)RTI资料总结和分享
  17. LNK2038: “_ITERATOR_DEBUG_LEVEL”的不匹配项
  18. java实现通过浏览器方式下载文件及多个文件
  19. 时钟周期、机器周期、指令周期、总线周期的区别
  20. 虚拟机(一)虚拟机安装Mysql

热门文章

  1. 工业软件linux版,恩智浦宣布针对工业4.0推出基于社区的工业Linux发行版
  2. 织梦熊掌号提交urls.php,织梦后台如何接入熊掌号教程
  3. web前端高级React - React从入门到进阶之组件的状态提升
  4. AMBA总线协议-ahb总线互联结构结合协议的理解
  5. Esxi 克隆 虚拟机
  6. 利用GPT2生成莎士比亚写作风格的文本(python实现)
  7. java婚纱影楼管理系统论文_基于Java的婚纱影楼管理系统设计论文
  8. Response和Request常用方法以及mmgrid插件的学习
  9. android8.1系统连接不上BLE蓝牙设备问题解决
  10. Java学习之路5——面向对象(OOP)和异常机制