我需要从一列中选择具有重复项的值,但排除在其他列中也具有重复项的值。使用 SQLite。需要合理优化查询。
示例表:
文件 | 校验和 |
---|---|
2 | 1 |
3 | 1 |
4 | 2 |
4 | 2 |
5 | 3 |
5 | 3 |
6 | 3 |
SQL:
CREATE TABLE t1 (
file INT,
checksum VARCHAR(512)
);
INSERT INTO t1 (file, checksum) VALUES
('2', '1'),
('3', '1'),
('4', '2'),
('4', '2'),
('5', '3'),
('5', '3'),
('6', '3');
我最终提出疑问:
select checksum from t1
where file not in (select file from t1 group by file having count(file) > 1)
group by checksum
having count(checksum) > 1
但它不选择
checksum=3
由于您已经使用
where file not in (select file from t1 group by file having count(file) > 1)
进行过滤,然后按 checksum
进行分组,因此您不需要使用 having count(checksum) > 1
进一步过滤。 由于您似乎期望返回 1 和 3,因为它们是唯一具有重复项的校验和,因此我能够使用 sqlfiddle 获得您想要的结果。