如何从两列查询结果中删除重复的 id 对



我在一个表中获得了文件信息,在另一个表存储了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文件id 43,77,14id 2id 74文件中有重复的文件

| pid | sid |
=============
|  1  |  43 |
|  1  |  77 |
|  1  |  14 |
|  2  |  74 |
...
|  14 |   1 |
...
|  43 |   1 |
...
|  74 |   2 |
...
|  77 |   1 |
...

我想要实现的是去掉其中一个相反的对以避免重复的结果,SQL中有办法做到这一点吗?

我认为不等式条件应该是充分的:

SELECT a.file_id pid, b.file_id sid
FROM checksums a 
INNER JOIN checksums b ON b.checksum = a.checksum
WHERE A.file_id < B.file_id
ORDER BY pid

最新更新