【问题标题】:Select records from Oracle table where single column is unique从单列唯一的 Oracle 表中选择记录
【发布时间】:2013-03-07 06:22:38
【问题描述】:

我正在尝试找出一种简单而优雅的方法来返回由特定列唯一标识的表中的每一行和每一列。

换句话说。想象一个表有以下列和行...我想要所有唯一的重复 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 表。

【问题讨论】:

  • 请根据您的样本数据发布想要的结果。
  • 如果 duplicateID 6 检索到 id 8,为什么 duplicateID 1 检索不到 id 2? I would want the all the records from ID 1, 3, 6 and 8
  • 我想我真的想要一个真正独特的行。

标签: sql oracle unique


【解决方案1】:

你可以使用类似的分析

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

【讨论】:

    【解决方案2】:

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

             select * from T
             inner join
             (
             select distinct duplicateID from T
             ) as V
             on T.id = V.duplicateID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2023-01-18
      • 1970-01-01
      相关资源
      最近更新 更多