SQL 处理重复项
SQL是一种用于管理和操作关系数据库中数据的编程语言。在使用数据库时,常见的问题之一就是存在多个重复记录。重复记录是在创建表时,有时无意或有意将数据多次输入到表中时发生的。在SQL中处理重复项涉及到识别、过滤、删除或合并表中的重复记录。
为什么需要在SQL中处理重复项
处理数据库中重复项有多种原因。其中一个主要原因是,在组织数据库中存在重复记录会导致逻辑错误。此外,我们需要处理冗余数据以防止以下后果:
- 重复数据占用存储空间,导致数据库使用效率降低。
-
由于资源使用增加,处理资源的总成本上升。
-
由于存在重复记录而导致的逻辑错误增加,从数据库中推导出的结论也将是错误的。
处理重复项的方法
随着数据库中重复项的增加,引入了各种方法来处理它们。以下是这些方法:
- 使用DISTINCT关键字
- 使用GROUP BY子句
- 使用UNION子句
让我们在下面详细了解这些方法。
使用DISTINCT关键字
我们可以使用DISTINCT关键字在SQL中处理重复项。这与SELECT语句一起使用,通过消除所有重复记录并只检索唯一记录来消除重复项。
语法
消除重复记录的DISTINCT关键字的基本语法如下。
示例
考虑具有以下记录的CUSTOMERS表。
首先,让我们看看以下SELECT查询如何返回重复的工资记录。
这将产生以下结果,其中工资为2000的记录重复出现了两次,这是从原始表中复制的记录。
现在,让我们在上面的SELECT查询中使用DISTINCT关键字并查看结果。
输出
这将产生以下结果,其中我们没有任何重复的条目。
使用Group By子句
我们还可以使用Group By子句将两个相似的记录合并为一个。以下是实现该功能的语法−
示例
在本示例中,我们尝试使用以下查询创建一个新表”Employee”。
现在,我们可以使用INSERT语句将值插入到这个空表中,如下所示:
员工表包含组织中员工的详细信息以及他们的销售情况。
使用以下”Group By”查询,我们尝试将表中的重复记录合并为一条记录,并按升序排列。
输出
展示的表格如下所示-
使用 UNION
UNION是SQL中的一种操作符/子句,它的功能类似于关系代数中的并运算符。它只是将多个兼容的表的信息组合在一起。
只有来自表的不同行被添加到结果表中,因为UNION会自动消除所有重复记录。
语法
以下是SQL中UNION操作符的语法:
示例
首先我们创建两个表”COURSES_PICKED”和”EXTRA_COURSES_PICKED”,它们有相同数量的列并且数据类型也相同。
使用以下查询语句创建表”COURSES_PICKED” −
使用下面的查询将值插入COURSES_PICKED表中:
表格将显示为 –
使用以下查询创建表EXTRA_COURSES_PICKED−
以下是将值插入EXTRA_COURSES_PICKED表的查询语句−
表格将如下所示创建:
现在,让我们尝试使用UNION查询来合并这两个表,如下所示:
现在,让我们尝试通过使用UNION查询来结合这两个表,如下所示 –
输出结果
执行 UNION 操作后获得的结果表为 –
由于”Julian”的记录是冗余的,UNION子句会消除重复记录,并仅返回不同的值。