筛选PostgreSQL查询,其中value不是同一列中任何其他值的子字符串

时间:2019-06-06 19:33:23

标签: postgresql

我有一个表,其中有一个名为values的列:

values | other_columns...
-------+-----------------
     f |              ...
   foo |              ...
    fo |              ...
   bar |              ...
    ba |              ...
   baz |              ...
foobar |              ...

查询此表时,我想过滤结果,以便仅剩下的行是其中value不是该列中任何其他value的子字符串的行:

prime_values | other_result_columns...
-------------+------------------------
         baz |                     ...
      foobar |                     ...

我该怎么做?

1 个答案:

答案 0 :(得分:1)

不存在:

select t.* 
from tablename t
where not exists (
  select 1
  from tablename
  where 
    values <> t.values 
    and 
    values like concat('%', t.values, '%')
)

请参见demo
结果:

> | values |...
> | :----- |
> | baz    |
> | foobar |