检索重复项并显示它们

时间:2016-07-12 10:32:00

标签: ruby-on-rails postgresql

我有这个问题,我想在另一行输出具有相同名称的行。如果该行没有另一行具有相同的名称,则不要检索该行。

| ID |名称|
| 1 |战场评论|
| 2 |使命召回审查|
| 3 |战场评论|
| 4 |圣徒行审查|
| 5 |使命召回审查|
| 6 |守望者评论|

我想要检索的行是:

| ID |名称|
| 1 |战场评论|
| 3 |战场评论|
| 2 |使命召回审查|
| 5 |使命召回审查|

这是我到目前为止所得到的

@unique_ids = ExternalReview.select("DISTINCT ON (name) id").map(&:id)
@external_reviews = ExternalReview.where.not(id: @unique_ids).order("name ASC").paginate per_page: 25, page: params[:page]

我希望你能帮助我

1 个答案:

答案 0 :(得分:1)

SELECT id, 
       NAME 
FROM   table1 
WHERE  NAME IN (SELECT NAME 
        FROM   table1 
        GROUP  BY NAME 
        HAVING Count (DISTINCT NAME) > 1) 

尝试按上述方式进行自我加入