我有这个SQL表:
CREATE TABLE DATA (
ID NUMBER NOT NULL,
CODE VARCHAR(32) NOT NULL,
DESCRIPTION VARCHAR(256),
PRIMARY KEY (ID)
);
和其中的一些值如:
ID CODE DESC
1 'A' 'AAAA'
2 'B' 'BBB'
3 'A' 'AGAIN'
4 'C' 'CCC'
5 'A' 'ABBA'
我想检索具有类似代码的所有行,因为我需要在代码列上添加UNIQUE约束。
我有这个问题:
select distinct
t1.code, t1.id, t1.description, t2.id, t2.description
from
data t1, data t2
where
t1.code = t2.code and t1.id != t2.id
order by t1.code
这就是给我这个结果集:
A 5 ABBA 1 AAAA
A 3 AGAIN 1 AAAA
A 1 AAAA 5 ABBA
A 1 AAAA 3 AGAIN
A 3 AGAIN 5 ABBA
A 5 ABBA 3 AGAIN
如何调整查询以丢弃已列出的差异组合? 在这个例子中,我想只有这些行:
A 1 AAAA 3 AGAIN
A 1 AAAA 5 ABBA
A 3 AGAIN 5 ABBA
答案 0 :(得分:2)
你可以只接受每两行中的一行,例如:
select distinct
t1.code, t1.id, t1.description, t2.id, t2.description
from
data t1, data t2
where
t1.code = t2.code and t1.id < t2.id
order by t1.code