在 sql 中查找唯一的数据网格
Posted
技术标签:
【中文标题】在 sql 中查找唯一的数据网格【英文标题】:Finding unique data grids in sql 【发布时间】:2014-08-19 18:43:27 【问题描述】:我想使用 sql 查找唯一的数据集(想想形成唯一数据集的行组,查找并消除重复项)。对 parent_id、key_id、key_value_id 进行分组。但唯一性需要通过横向和纵向考虑数据来确定。数据大小为 terra 字节。
例如,我在表格中有以下数据 -
parent_id key_id key_value_id id value
601 null null 601 S
601 null null 602 5
601 null null 601 S
601 null null 602 5
601 null null 610 TYPE B
16501 16502 3 16501 -
16501 16502 3 16508 ?
601 null null 601 S
601 null null 602 5
16501 16502 3 16501 -
16501 16502 3 16508 3
预期结果如下 -
parent_id key_id key_value_id id value
601 null null 601 S
601 null null 602 5
601 null null 601 S
601 null null 602 5
601 null null 610 TYPE B
16501 16502 3 16501 -
16501 16502 3 16508 ?
16501 16502 3 16501 -
16501 16502 3 16508 3
此数据集/网格被重复并因此被删除。
601 null null 601 S
601 null null 602 5
由于集合中有额外的行,这将被视为单独的数据集 -
601 null null 601 S
601 null null 602 5
601 null null 610 TYPE B
一种选择是使用游标,但数据量很大,这可能不是一个高效的解决方案。我想知道是否有更简单的方法来做到这一点。
任何帮助/指针将不胜感激。
【问题讨论】:
【参考方案1】:SQL 是基于集合的,但通常顺序并不重要。如何使用 MINUS 运算符比较上面的 2 个查询。如果您想要比这更复杂的东西,您需要提供有关您的查询、要求和您正在使用的数据库引擎的更多详细信息。
PS MINUS 用在 Oracle 中,我认为 SQLServer 用 EXCEPT
【讨论】:
使用的数据库是 SQL Server。我没有两个可以执行集合操作的数据集。第一个块显示了我的问题数据如何,在该块本身中有大量重复的数据集,我需要消除重复的数据集。第二个块显示消除完成后的预期结果。以上是关于在 sql 中查找唯一的数据网格的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pyspark 或 SQL 从图像列中查找唯一图像名称
2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。 DROP TABLE IF EXISTS `em