分组时如何使 postgres db 中的列为空使这成为分组中的最高行

How can I null columns in postgres db when grouping makes this the hihghes t row in grouping

这个table代表音乐曲目上的艺术家,位置指定艺术家的顺序,join_relation 指定要在艺术家之间插入的文本,例如“&”或“,”以创建 artistcredit

table "tracks_artists"
    Column     |  Type   | Modifiers
---------------+---------+-----------
 track_id      | text    | not null
 position      | integer | not null
 name          | text    |
 join_relation | text    |

所以如果我们在名称中有这些行

track_id | position | name | join_relation
--------------------------------------------------------------------+--------------
f559fe60-cf21-4019-9395-7bdde3256be1 | 1 | Elec3 |  &
f559fe60-cf21-4019-9395-7bdde3256be1 | 2 | Psynina  | 

艺术家信用将是 Elec3 & Pysnina

但在某些情况下,由于导入数据无效,我们对所有行的连接关系都有一个值

track_id | position | name | join_relation
--------------------------------------------------------------------+--------------
f559fe60-cf21-4019-9395-7bdde3256be1 | 1 | Elec3 |  &
f559fe60-cf21-4019-9395-7bdde3256be1 | 2 | Psynina  | ,

也就是说,这会给 Elec3 和 Pysnina,

但这是错误的,因为排名最高的艺术家不应该有 join_relation 列的值

我该如何解决这个 table 以便任何曲目的最高级别艺术家将 relation_join 设置为空。如果更容易的话,我不介意分多个阶段进行。

我正在使用 Postgres 9.3.5

更新 根据下面的答案分成几个阶段,首先找到问题行

create temp table badjoins as
select t1.* from tracks_artists t1
where 
( t1.join_relation is not null AND t1.join_relation!='')
AND NOT EXISTS 
(
     SELECT 1 FROM tracks_artists t2 WHERE t1.track_id = t2.track_id  
     AND t2.position > t1.position
);

也许是这个?

UPDATE tracks_artists t1 SET join_relation = NULL WHERE NOT EXISTS (SELECT 1 FROM track_artists t2 WHERE t1.track_id = t2.track_id AND t2.position > t1.position)