从加权关系数据库中删除重复记录

gc0ot86w  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(399)

我有一个关系sql数据库,它是从tensorflow图像分类器返回的数据派生出来的。我相信在image表和relational表中都有大量的重复条目,我想删除它们,同时确保不破坏任何关系。
例如,此关系表:

image_id | term_id | weight
1 18 0.95336
2 18 0.49187
2 25 0.35451
3 18 0.84148
3 18 0.84148
3 18 0.84148
4 18 0.84148
5 7 0.25471

应该变成:

image_id | term_id | weight
1 18 0.95336
2 18 0.49187
2 25 0.35451
3 18 0.84148
5 7 0.25471

这个图像表:

ID | file_path | file_name
1 /folder/ imageDog.jpg
2 /folder/ imageMouse.jpg
3 /folder/subfolder/ imageCat.jpg
4 /folder/subfolder/ imageCat.jpg
5 /folder/subfolder/ imageSnake.jpg

应该变成:

ID | file_path | file_name
1 /folder/ imageDog.jpg
2 /folder/ imageMouse.jpg
3 /folder/subfolder/ imageCat.jpg
5 /folder/subfolder/ imageSnake.jpg

请注意,id为4的图像是3的副本,因此需要删除该图像及其关系。我认为在某些情况下,某些复制的图像可能缺少关系,在这种情况下,应该只保留一个具有关系的图像。我希望这有道理。

xzlaal3s

xzlaal3s1#

您可以使用聚合函数来获取单个图像的\u id,例如:min(图像\u id)group by term \u id,weight

select min(image_id ) min_id
    , term_id 
    , weight
  from my_table  
  group by term_id, weight

如果你想删除与minu id结果无关的路径,你可以使用

delete  from your_file_path_table 
where ID  not in (
  select min(image_id ) 
     from my_table  
    group by term_id, weight
)

相关问题