小编典典

ORACLE Select Distinct返回许多列,其中

sql

我有一张桌子,看起来像这样:

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-
选择唯一/唯一,但返回所有列?

但是,当我Col1 = '2'向select语句的WHERE部分添加add时,它不会返回Col1为2的所有名称,因为我认为它首先查找的是一个不同的数字,而不是1,因此需要该结果。

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


阅读 185

收藏
2021-04-07

共1个答案

小编典典

据我了解,此查询应该可以解决您的问题:

select distinct a.* from temp_ids a join

(select name, max(col1 || ' ' || col2  || ' ' || col3) id
from temp_ids
where col1 = 2
group by name
) b

on (a.name = b.name and (col1 || ' ' || col2  || ' ' || col3) = b.id)
;

当然,最好使用唯一记录ID代替串联,但是可以生成ID。确保id的函数为每个列组合返回唯一值(在这种情况下使用(col1 ||’‘|| col2 ||’‘||col3))

2021-04-07