如何从两列查询结果中去除重复的 id 对
How to get rid of duplicated pairs of id's from two column query result
我在一个 table 和 file_id 中获得了文件信息,在另一个中存储了校验和。现在我想用校验和
在 table 中搜索重复文件
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
我得到的结果还算不错,可以进一步处理后使用。我想知道的是我是否以及如何直接从查询中获得正确的结果。我的意思是摆脱这两列中的“交叉重复项”。例如,如果 File with id 1 与 Files 重复,得到 id 43 ,77,14 和 id 2 在文件中重复 id 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
我在一个 table 和 file_id 中获得了文件信息,在另一个中存储了校验和。现在我想用校验和
在 table 中搜索重复文件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
我得到的结果还算不错,可以进一步处理后使用。我想知道的是我是否以及如何直接从查询中获得正确的结果。我的意思是摆脱这两列中的“交叉重复项”。例如,如果 File with id 1 与 Files 重复,得到 id 43 ,77,14 和 id 2 在文件中重复 id 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