在 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 中查找唯一的数据网格的主要内容,如果未能解决你的问题,请参考以下文章

sql查询查找列数据的唯一组合

SQL 查找具有多个字段的重复项(没有唯一 ID)

使用 Pyspark 或 SQL 从图像列中查找唯一图像名称

在 ExtJs 4 网格中强制执行唯一键值

在 sql 中查找唯一的路由

2022-11-27:超过经理收入的员工。编写一个SQL查询来查找收入比经理高的员工。以下数据的结果输出是Joe,因为Joe是唯一挣得比经理多的雇员。 DROP TABLE IF EXISTS `em