【发布时间】:2021-04-05 13:12:30
【问题描述】:
我在一张表中获得了文件信息,而在另一张表中存储了 file_id 和校验和。现在我想用校验和搜索表中的重复文件
SELECT A.file_id pid, B.file_id sid
FROM checksums A INNER JOIN checksums B ON A.checksum = B.checksum
WHERE A.file_id <> B.file_id
ORDER BY pid
我得到的结果还算不错,可以进一步处理后使用。我想知道的是我是否以及如何直接从查询中获得正确的结果。我的意思是在这两列中摆脱“交叉重复”。例如,如果具有 id 1 的 File 与具有 id 43,77,14 和 的 Files 重复>id 2 与 id 74 的文件重复,然后我得到以下结果
| pid | sid |
=============
| 1 | 43 |
| 1 | 77 |
| 1 | 14 |
| 2 | 74 |
...
| 14 | 1 |
...
| 43 | 1 |
...
| 74 | 2 |
...
| 77 | 1 |
...
我想要实现什么来摆脱这些相反的一对以避免重复结果,SQL 中有没有办法做到这一点?
【问题讨论】:
-
所有行都重复了吗?
-
在我当前的查询结果中,所有行都有“相反对”
标签: sql sqlite duplicates inner-join self-join