1

我有一张像

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

我想在删除空间后得到所有独特的音符,所以我的结果会是这样的

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

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

4

2 回答 2

2

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

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

sqlfiddle

于 2016-02-10T18:45:43.613 回答
0

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

WhateverModel.pluck("REPLACE(note, ' ', '')").uniq
于 2016-02-10T21:03:11.680 回答