【SQL系列】查找相同的行

简介: 【SQL系列】查找相同的行

你想找出两张表中相同的行,但需要连接多列。前提,创建视图 X。

create view X

as

select name, job, salary

from emp

where job = 'Director'

返回 EMP 表中与视图X中行匹配的每位员工的信息。

解决方案

基于必要的列将表连接起来,以返回正确的结果。也可以使用集合运算 INTERSECT 来返回两张表的交集(两张表中相同的行),这样可以避免执行连接操作。

MySQL 和 SQL Server

使用多个连接条件将 EMP 表和视图X 连接起来。

select e.deptno,e.name,e.job,e.salary,e.deptno

from emp e, x

where e.name = x.name

and e.job   = x.job

and e.salary   = x.salary;

也可以使用 JOIN 子句来执行这个连接。

select e.deptno, e.name, e.job, e.salary, e.deptno

from emp e

        join x

             on (e.name = x.name

                 and e.job = x.job

                 and e.salary = x.salary);

DB2、Oracle 和 PostgreSQL

MySQL 和 SQL Server 解决方案也适用于 DB2、Oracle 和 PostgreSQL。需要返回视图 X 中的值时,应该使用该解决方案。

如果不需要返回视图 X中的列,那么可以结合使用集合运算 INTERSECT 和谓词 IN。

select deptno, name, job, salary, deptno

from emp

where (name, job, salary) in (select name, job, salary

                             from emp

                             intersect

                             select name, job, salary

                             from X);

扩展

执行连接操作时必须基于合适的列,这样才能返回正确的结果。当两张表中有些列的值可能相同,而其他列的值不同时,这一点尤其重要。

集合运算 INTERSECT 会返回两个数据源中相同的行。使用 INTERSECT 时,必须对两张表中数据类型相同的列进行比较。别忘了,集合运算默认不会返回重复的行


点个赞吧,这对我非常重要!

目录
相关文章
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之如何查看SQL语句使用的是行索引还是列索引
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 分布式计算 大数据
MaxCompute产品使用合集之在sql里调用自定义的udf时,设置一次同时处理的数据行数,是并行执行还是串行执行的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
52 1
|
5月前
|
SQL 数据库
SQL JOIN 子句:合并多个表中相关行的完整指南
SQL LEFT JOIN关键字返回左表(table1)中的所有记录以及右表(table2)中的匹配记录。如果没有匹配,则右侧的结果为0条记录。
222 0
|
SQL 数据库
【SQL server 修改编辑前200行操作中的行数】
【SQL server 修改编辑前200行操作中的行数】
220 0
【SQL server 修改编辑前200行操作中的行数】
|
SQL Oracle 关系型数据库
update时 单行子查询返回多个行 SQL 错误 [1427] 处理方案
我遇到此错误是在多表关联update的
733 0
|
SQL 关系型数据库 MySQL
【SQL系列】检索在另一张表中没有对应行的行
【SQL系列】检索在另一张表中没有对应行的行
96 0
|
SQL 关系型数据库 Java
高逼格的 SQL 写法:行行比较
高逼格的 SQL 写法:行行比较
【SQL开发实战技巧】系列(二十六):数仓报表场景☞聊聊ROLLUP、UNION ALL是如何分别做分组合计的以及如何识别哪些行是做汇总的结果行
本篇文章讲解的主要内容是:***ROLLUP、UNION ALL是如何分别做分组合计的以及如何通过CUBE 、GROUPING、GROUPING_ID 识别哪些行是做汇总的结果行***
【SQL开发实战技巧】系列(二十六):数仓报表场景☞聊聊ROLLUP、UNION ALL是如何分别做分组合计的以及如何识别哪些行是做汇总的结果行
下一篇
无影云桌面