SQL查找相似的行而不进行所有组合

SQL查找相似的行而不进行所有组合,sql,select,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

我有一个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'
我希望检索具有类似代码的所有行,因为我需要在“代码”列上添加唯一约束

我有一个疑问:

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

每两行中只能取一行,例如:

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
选择distinct
t1.code,t1.id,t1.description,t2.id,t2.description
从…起
数据t1,数据t2
哪里
t1.code=t2.code和t1.id
非常感谢,这是个好把戏。。。但是,如果基于id以外的其他字段进行比较,该怎么办呢?您可以将不等式运算符用于其他数据类型。另一个问题可能是,如果有两行以上的代码相同,那么在这种情况下可能需要更复杂的查询。