当一列在不同行中包含相同值时,从许多结果中仅获取一条记录

问题描述 投票:1回答:1

我的SQL结果与下面类似。我一直在使用rails,想在SQLRails中找到解决方案

    id | name | addr | add_id
    -------------------------
    1 |   m  |   Q   |  15
    2 |   n  |   Q   |   3
    3 |   o  |   Q   |  37   
    4 |   f  |   R   |   8
    5 |   c  |   A   |   1
    6 |   r  |   M   |   6
    7 |   v  |   W   |  20
    8 |   z  |   T   |   4

我正在尝试的是,如果在同一列中有多行具有共同数据的行,则只获得一行。例如,在以上结果中,我具有与Id 1, 2 and 3相同的addr。但是,我想消除这种现象,如果一列上有重复,则我希望下面的结果仅采用该行的其中之一。预期的结果。

Q
sql postgresql ruby-on-rails-5 greatest-n-per-group
1个回答
0
投票

在Postgres中, id | name | addr | add_id ------------------------- 1 | m | Q | 15 4 | f | R | 8 5 | c | A | 1 6 | r | M | 6 7 | v | W | 20 8 | z | T | 4 对此非常有用:

distinct on

如果您确实希望在结果集中保持select distinct on(addr) t.* from mytable t order by addr, id 的顺序,则可以包装查询:

id

select * from (select distinct on(addr) t.* from mytable t order by addr, id) t order by id

id |名称|地址| add_id-:| :--- | :--- | -----:1 |米|问| 154 | f | R | 85 | c | A | 1个6 | r | M | 67 | v | W | 208 | z | T | 4
© www.soinside.com 2019 - 2024. All rights reserved.