11. 集合运算

        select查询结果是一个包含一或多条数据的结果集,类似数学里的集合,可进行交(intersect)、并(union)、差(minus)运算。
被操作的结果集需满足:
  • 两结果集所含数据列的数量相等
  • 两结果集所含数据列的类型必须一一对应

集合运算-练习

保证作集合运算的两结果集的列数、数据型一一对应

#

1union并运算

重复的数据只保留一

SELECT

    id,

    java # 查询结果显示的名字java

FROM grades

UNION

    SELECT

        idmath

    FROM student;

 

2minus差运算(MySQL持)

从集合A减去集合AB共有的。

语法式:select 语句 minus select 语句【不持】,但可借助子查询notin实现minus运算

SELECT

    idmath

FROM student

WHERE

    (id, math)NOT IN(SELECT id, math FROM grades);

 

3interset交运算(MySQL持)

语法式:select 语句 interset select 语句【不持】,但可借助多表连接查询实现interset交运算

 

SELECT

    #即使查交集,由于多表查询,也【必】指定同名字段的表名

    s.ids.math

FROM

    student s

JOIN grades g ON(s.id = g.id AND s.math = g.math)

WHERE

    s.id >=1; # g.id 效果一样


欢迎个人转载,但须在文章页面明显位置给出原文连接;
未经作者同意必须保留此段声明、不得随意修改原文、不得用于商业用途,否则保留追究法律责任的权利。

【 优快云 】:csdn.zxiaofan.com
【GitHub】:github.zxiaofan.com

如有任何问题,欢迎留言。祝君好运!
Life is all about choices! 
将来的你一定会感激现在拼命的自己!
### Java集合的并、差、交运算Java 中,`Set` 接口提供了多种方法来实现集合的并集、差集和交集操作。虽然 `List` 是一种有序可重复的数据结构,但在处理这些集合运算时通常更推荐使用 `Set`,因为其设计初衷就是为了表示数学上的集合。 以下是基于 `Set` 的实现方式: #### 实现代码 ```java import java.util.HashSet; import java.util.Set; public class SetOperations { public static void main(String[] args) { // 初始化两个集合 A 和 B Set<Integer> setA = new HashSet<>(); setA.add(1); setA.add(2); setA.add(3); Set<Integer> setB = new HashSet<>(); setB.add(2); setB.add(3); setB.add(4); System.out.println("集合 A: " + setA); System.out.println("集合 B: " + setB); // 并集 (Union) Set<Integer> union = new HashSet<>(setA); // 创建一个新的集合保存结果 union.addAll(setB); System.out.println("并集: " + union); // 交集 (Intersection) Set<Integer> intersection = new HashSet<>(setA); // 创建一个新的集合保存结果 intersection.retainAll(setB); System.out.println("交集: " + intersection); // 差集 (Difference, A - B) Set<Integer> differenceAB = new HashSet<>(setA); // 创建一个新的集合保存结果 differenceAB.removeAll(setB); System.out.println("差集(A-B): " + differenceAB); // 差集 (Difference, B - A) Set<Integer> differenceBA = new HashSet<>(setB); // 创建一个新的集合保存结果 differenceBA.removeAll(setA); System.out.println("差集(B-A): " + differenceBA); } } ``` #### 输出示例 假设输入如下: - 集合 A: `{1, 2, 3}` - 集合 B: `{2, 3, 4}` 运行程序后的输出将是: ``` 集合 A: [1, 2, 3] 集合 B: [2, 3, 4] 并集: [1, 2, 3, 4] 交集: [2, 3] 差集(A-B): [1] 差集(B-A): [4] ``` --- 如果需要使用 `List` 而不是 `Set` 来完成类似的集合运算,则可以通过手动去重的方式模拟集合行为[^6]。然而需要注意的是,由于 `List` 支持重复元素,在某些情况下可能无法完全满足严格的集合定义需求。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值