ORACLE Select Distinct 返回许多列,其中

2024-04-22

我有一个看起来像这样的表:

NAME    Col1     Col2    Col3
Tim     1        2       3
Tim     1        1       2
Tim     2        1       2
Dan     1        2       3
Dan     2        2       1
Dan     2        1       3

我试图创建一个 SELECT 命令,结果如下:

NAME    Col1     Col2    Col3
Tim     2        1       2
Dan     2        2       1

所以我想要不同的名称,但选择所有四列并且其中 Col1 = 2。 我在这里使用了解决方案来使不同的部分正常工作:SQL/mysql - 选择不同/唯一但返回所有列? https://stackoverflow.com/questions/6127338/sql-select-distinct-but-return-all-columns

但是当我添加添加Col1 = '2'select 语句的 WHERE 部分不会返回 Col1 为 2 的所有名称,因为我认为它首先查看另一个不是 1 的名称,因此采用该结果。

希望我说得有道理,有人可以提供帮助。很难解释并想出一个好的标题。谢谢!


如果仅选择这两列(名称和 col1)就足够了,您可以使用:

select 
    distinct x.name, x.col1
  from table_name x
  where x.col1 = 2;

or

select 
    x.name, x.col1
  from table_name x
  where x.col1 = 2
  group by (x.name, x.col1);  

如果您需要所有值,但不介意您获得满足您条件的多个记录中的哪一个(例如 Dan 2 2 1 或 Dan 2 1 3),您可以使用此值(它将根据顺序记录这些记录中的第一个)标准):

select xx.name, xx.col1, xx.col2, xx.col3
  from (select 
      x.name, x.col1, x.col2, x.col3, dense_rank() over (partition by x.name order by x.name, x.col1, x.col2, x.col3) rnk
    from table_name x
    where x.col1 = 2) xx
  where xx.rnk = 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORACLE Select Distinct 返回许多列,其中 的相关文章

随机推荐