我想使用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
一种选择是使用游标,但数据的大小很大,这可能不是一个高性能的解决方案。我想知道是否有更简单的方法来做到这一点。
任何帮助/指示都将不胜感激。
答案 0 :(得分:0)
SQL是基于设置的,但通常命令并不重要。如何使用MINUS运算符来比较上面的2个查询。如果你想要比这更复杂的东西,你需要提供你正在使用的查询,要求和数据库引擎的更多细节。
PS MINUS用于Oracle,我认为SQLServer使用EXCEPT