0
我試圖寫一個如下的查詢:重複的行後,左連接(Postgres的)
select distinct bsg.id as bsgId,
s.system_id as sysId,
g.code_no as gameNo,
u.user_name as nameOfUser,
s.score_code as scoreId,
p.name as cityOfGame
from score s
join scoreGr sg on sg.id = s.scoreGr_id
join bigScoreGr bsg on sg.bigScoreGr_id = bsg.id
join game g on bsg.fld_case_id = g.id
join user u on s.user_id = u.id
join system_number sn on g.id = sn.game_id
join system_doc sd on sd.system_number_id = sn.id
left join parameter p on sd.city_id = p.id
直到我與參數表加入,如預期的結果。結果如下所示:
bsgId| sysId | gameNo | nameOfUser | scoreId
--------------------------------------------------
1234 | abcde | G-12 | admin | G-12/1/1
1235 | abcdf | G-15 | admin | G-15/1/3
1234 | abcdf | G-12 | user1 | G-12/1/8
1237 | abcdf | G-16 | user1 | G-16/2/4
但是,參數表有些大,system_doc在其city_id列中有一些空值。當我添加我的查詢的左連接部分,它變成這樣:
bsgId| sysId | gameNo | nameOfUser | scoreId | city
--------------------------------------------------
1234 | abcde | G-12 | admin | G-12/1/1 | city1
1235 | abcdf | G-15 | admin | G-15/1/3 | city5
1235 | abcdf | G-15 | admin | G-15/1/3 |
1234 | abcdg | G-12 | user1 | G-12/1/8 | city4
1234 | abcdg | G-12 | user1 | G-12/1/8 |
1237 | abcdf | G-16 | user1 | G-16/2/4 |
我不想像第三和第五個行。爲了避免這些行在城市列中有空,並且「具有完全相同的數據,除了城市字段」(我的意思是實際上城市可以爲null,如在最後一行中,但是行#2使得行#3無用,所以我只想要行#2)我已經使用distinct on(scoreId)
,但它沒有工作,因爲我已經失去了行#2,但沒有行#3。
如何消除那些在其城市字段中爲空的重複行?我希望我的問題很清楚。
據我所知,你希望'(bsgId,sysId,gameNo,nameOfUser,scoreId)'上的不同。不僅僅是'(scoreId)'上的獨特的' –
實際上它們是相同的,因爲scoreId在你所寫的所有領域都是唯一的。但即便如此,我得到了不良結果。取而代之的是刪除空行的行,這個查詢有時會消除非空行 –