查询俩个表相数据的方法 INTERSECT

在Oracle数据库中,`INTERSECT`是一个集合操作符,用于从两个或更多的查询结果集中返回那些同时存在于所有结果集中的行。它的语法如下:

```sql
SELECT column_name(s) FROM table1
INTERSECT
SELECT column_name(s) FROM table2;
```

这里,`table1`和`table2`是你要进行比较的表,`column_name(s)`是你要返回的列名。`INTERSECT`会返回两个查询结果中都存在的行,不会包括重复的结果。

以下是一些使用`INTERSECT`的例子:

1. **基本用法**:
   如果你想找出两个部门中员工的名字,但只显示那些在两个部门都有的员工,你可以这样做:
   ```sql
   SELECT employee_name FROM department1
   INTERSECT
   SELECT employee_name FROM department2;
   ```

2. **多个表的`INTERSECT`**:
   如果有多个表,你可以使用`ALL`关键字来指定它们:
   ```sql
   SELECT column_name FROM table1
   INTERSECT ALL
   SELECT column_name FROM table2
   INTERSECT ALL
   SELECT column_name FROM table3;
   ```

3. **排除操作**:
   Oracle不直接支持`EXCEPT`(排除)操作,但你可以先使用`UNION ALL`然后排除结果中的重复项:
   ```sql
   (SELECT column_name FROM table1
   UNION ALL
   SELECT column_name FROM table2)
   MINUS
   (SELECT column_name FROM table1
   INTERSECT
   SELECT column_name FROM table2);
   ```

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值