SQL找不到所有组合的类似行

时间:2011-04-28 08:53:42

标签: sql select

我有这个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

1 个答案:

答案 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