识别重复记录组 (TSQL)
我在 MSSQL 数据库中有大量表(超过 95 000 000 条记录)
id | Configuration_id | Equipment_group_id | name | Price |
---|---|---|---|---|
1 | 1 | 100 | item1 | 10 |
2 | 1 | 100 | item2 | 20 |
3 | 1 | 100 | item3 | 30 |
4 | 2 | 100 | item1 | 10 |
5 | 2 | 100 | item2 | 20 |
6 | 2 | 100 | item3 | 30 |
7 | 3 | 100 | item1 | 10 |
8 | 3 | 100 | item2 | 20 |
9 | 3 | 100 | item3 | 31 |
我将识别重复的记录组。
配置 1 组
id | Configuration_id | Equipment_group_id | name | Price |
---|---|---|---|---|
1 | 1 | 100 | item1 | 10 |
2 | 1 | 100 | item2 | 20 |
3 | 1 | 100 | item3 | 30 |
配置 2 组
id | configuration_id | Equipment_group_id | name | Price |
---|---|---|---|---|
4 | 2 | 100 | item1 | 10 |
5 | 2 | 100 | 项目 | 2 20 |
6 | 2 | 100 | item3 | 30 |
配置 3 组
id | 配置_id | Equipment_group_id | name | 价格 |
---|---|---|---|---|
7 | 3 | 100 | item1 | 10 |
8 | 3 | 100 | item2 | 20 |
9 | 3 | 100 | item3 | 31 |
- 在我的逻辑中 组 1 和 组2 是重复项
- 具有相同数量的记录
- 在
equipment_group_id
、name
、price
字段中具有相同的内容
- 在字段
equipment_group_id
、name
、price
Group 1 和 >组 3 不重复,因为至少有一个不同的元素(最后一条记录的价格为 31,而不是 30)
如何构建查询来查找表中重复的所有组(不是记录) ?
I have got massive table (over 95 000 000 records) in MSSQL database
id | configuration_id | equipment_group_id | name | price |
---|---|---|---|---|
1 | 1 | 100 | item1 | 10 |
2 | 1 | 100 | item2 | 20 |
3 | 1 | 100 | item3 | 30 |
4 | 2 | 100 | item1 | 10 |
5 | 2 | 100 | item2 | 20 |
6 | 2 | 100 | item3 | 30 |
7 | 3 | 100 | item1 | 10 |
8 | 3 | 100 | item2 | 20 |
9 | 3 | 100 | item3 | 31 |
I am going to identify duplicated group of records.
Configuration 1 Group
id | configuration_id | equipment_group_id | name | price |
---|---|---|---|---|
1 | 1 | 100 | item1 | 10 |
2 | 1 | 100 | item2 | 20 |
3 | 1 | 100 | item3 | 30 |
Configuration 2 Group
id | configuration_id | equipment_group_id | name | price |
---|---|---|---|---|
4 | 2 | 100 | item1 | 10 |
5 | 2 | 100 | item2 | 20 |
6 | 2 | 100 | item3 | 30 |
Configuration 3 Group
id | configuration_id | equipment_group_id | name | price |
---|---|---|---|---|
7 | 3 | 100 | item1 | 10 |
8 | 3 | 100 | item2 | 20 |
9 | 3 | 100 | item3 | 31 |
- in my logic Group 1 and Group 2 are duplicates
- has the same number of records
- has the same content in fields
equipment_group_id
,name
,price
- Group 1 and Group 3 are NOT duplicates because there is at least one different element (last record has price 31, not 30)
How to construct a query to find all groups that are duplicated (not records) across the table?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对 95M 记录的查询性能可能并不理想,但这应该可以解决问题。
查找包含多行的组的精确匹配
Performance of this query for 95M records will probably not be ideal, but this should do the trick.
Find Exact Matches of Groups Containing Multiple Rows