如何在删除 space 并按 postgres 中的某些不同列分组后获得唯一值

How to get unique value after removing space and group by some different column in postgres

我有一个 table 喜欢

id type note
1   A   ab cd
1   B   cdef
1   A   abd
1   A   abcd

我想在删除 space 后得到所有独特的注释,所以我的结果将是这样的

id type note
1   A   ab cd
1   A   abd
1   B   cdef

因为删除 space 后 ab cdabcd 将相同。 我正在使用 Postgres。请注意,id 列不是唯一的。

这是经典的分组最大值,但您只需将其分组在表达式而不是列上

SELECT id, type, note FROM
  (SELECT DISTINCT ON(replace(note,' ',''))
     id
     ,type
     ,note
   FROM table1
   ORDER BY replace(note,' ','')
  ) AS q

sqlfiddle

由于您似乎正在使用 Rails(根据您的标签),您还可以使用 ActiveRecord 获取 note 的所有唯一实例,忽略任何空格:

WhateverModel.pluck("REPLACE(note, ' ', '')").uniq