我的SQL结果与下面类似。我一直在使用rails,想在SQL
或Rails
中找到解决方案
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
在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