1

我试图找出一种简单而优雅的方法来返回由某个列唯一标识的表中的每一行和每一列。

换句话说。想象一个表中有以下列和行...我想要所有唯一的重复 ID 行...

id | duplicateID |Name | col1 | col2 | col3

1  |  1          |A    |B     | C    | D
2  |  1          |A    |B     | C    | D
3  |  3          |A    |B     | C    | D
4  |  3          |A    |B     | C    | D
5  |  1          |A    |B     | C    | D
6  |  5          |A    |B     | C    | D
7  |  5          |A    |B     | C    | D
8  |  6          |A    |B     | C    | D

我希望返回 ID 1、3、6 和 8 中的所有记录。因为这些都是来自重复记录列的唯一 ID。但我也想要这些行中的所有记录。有没有办法简单地做到这一点?我没有想象...到目前为止,我已经写了几个令人费解的查询,但都没有很好的结果。我必须说我不是 sql 专家。

更新

1  |  1          |A    |B     | C    | D
3  |  3          |A    |B     | C    | D
6  |  5          |A    |B     | C    | D
8  |  6          |A    |B     | C    | D

将是我需要的样本结果。顺便说一句,这一切都适用于 Oracle 表。

4

2 回答 2

3

您可以使用类似的分析

select id, duplicateid, name, col1, col2, col3
  from (select id, duplicateid, name, col1, col2, col3,
               row_number() over (partition by duplicateid order by id) rn
          from your_tab)
 where rn = 1;

小提琴:http ://sqlfiddle.com/#!4/c38b1/1

于 2013-03-06T22:18:49.067 回答
0

不确定我是否理解这个问题,但这里是:

         select * from T
         inner join
         (
         select distinct duplicateID from T
         ) as V
         on T.id = V.duplicateID
于 2013-03-06T22:19:57.457 回答