Sql 返回包含所有列但其中一列唯一的记录(不同)

Sql 返回包含所有列但其中一列唯一的记录(不同),sql,oracle,Sql,Oracle,我的数据库中有20列。我只需要选择那些具有不同Ref_ID的,但如果我使用distinctref_ID,我只会得到这些值的列表。我需要检索所有列,例如所有记录,但具有不同的ref_id。 我正在使用Oracle 9g。 例如,共有10条记录,其中5条具有相同的引用id。因此,select应仅返回这5条记录的所有列 很难说出您的意思,但这里有一个想法,这将返回表中多次包含的REF_ID值: select * from YOUR_TABLE where REF_ID in( select R

我的数据库中有20列。我只需要选择那些具有不同Ref_ID的,但如果我使用distinctref_ID,我只会得到这些值的列表。我需要检索所有列,例如所有记录,但具有不同的ref_id。 我正在使用Oracle 9g。
例如,共有10条记录,其中5条具有相同的引用id。因此,select应仅返回这5条记录的所有列

很难说出您的意思,但这里有一个想法,这将返回表中多次包含的REF_ID值:

select * from YOUR_TABLE
where REF_ID in(
    select REF_ID from YOUR_TABLE
    group by 
      REF_ID
    having
      count(REF_ID) > 1)

很难说出您的意思,但这里有一个想法,这将返回表中多次包含的REF_ID值:

select * from YOUR_TABLE
where REF_ID in(
    select REF_ID from YOUR_TABLE
    group by 
      REF_ID
    having
      count(REF_ID) > 1)
试试这个:

数据:

输出:

RANK        D_LET   D_NUM
1           a       1
1           b       3
1           c       2
试试这个:

数据:

输出:

RANK        D_LET   D_NUM
1           a       1
1           b       3
1           c       2
另一个解决方案:

SELECT * 
FROM TableX t
WHERE EXISTS
      ( SELECT *
        FROM TableX tt
        WHERE tt.REF_ID = t.REF_ID
          AND tt.PK <> t.PK           --- the Primary Key of the table
      ) 
另一个解决方案:

SELECT * 
FROM TableX t
WHERE EXISTS
      ( SELECT *
        FROM TableX tt
        WHERE tt.REF_ID = t.REF_ID
          AND tt.PK <> t.PK           --- the Primary Key of the table
      ) 

或许应该举个例子。很难说你是什么意思。不同的引用ID,col1,col2,col3,…那么存在多个具有相同引用ID的记录?然后要从哪个记录检索其他列?您使用的是哪种SQL方言?可能应该给出一个示例。很难说你是什么意思。不同的引用ID,col1,col2,col3,…那么存在多个具有相同引用ID的记录?然后要从哪个记录检索其他列?你用的是哪种SQL方言?很公平,你的答案比我的答案快了4秒,让我们用你的:很公平,你的答案比我的答案快了4秒,让我们用你的: