选择唯一的子集

时间:2017-05-15 17:48:59

标签: sql

我有一张如下例所示的表格。

SQL> select * from test;

    ID  PARENT_ID NAME
     1          1 A
     2          1 B
     3          2 A
     4          2 B
     5          3 A
     6          3 B
     7          3 C
     8          4 A

我需要的是获得所有唯一的名称子集((A,B),(A,B,C),(A))或排除重复的子集。你可以看到(A,B)是两次,一个是PARENT_ID = 1,一个是2。 我想排除这些重复:

ID  PARENT_ID NAME
1          1 A
2          1 B  
5          3 A
6          3 B
7          3 C
8          4 A

2 个答案:

答案 0 :(得分:0)

我使用了' group_concat'假设您正在使用' Mysql'。 Oracle中的等效函数是' listagg()'。你可以在SQL小提琴中看到它here

以下是解决方案: -

Select a.* from
test a
inner join
(
Select nm, min(parent_id) as p_id
from
    (
    Select Parent_id, group_concat(NAME) as nm
    from test
    group by  Parent_ID
    ) a
group by nm
)b
on a.Parent_id=b.p_id 
order by parent_id, name

答案 1 :(得分:0)

您可以使用$Command = "find ".__DIR__." -inum ".$Inode." -print"; $Result = shell_exec($Command); 仅返回不同的值。

e.g。

DISTINCT

enter image description here

SQL Fiddle