我有一個表格,如下所示,我想選擇u_id
與類型,但如果有更多的記錄u_id
那麼我想獲得有best
類型的記錄,或者如果它不存在然後good
等,best>good>worst
到目前爲止。我只能得到返回的u_id
的第一行。根據列值選擇記錄
u_id type
1 best
2 good
3 worst
2 best
我有一個表格,如下所示,我想選擇u_id
與類型,但如果有更多的記錄u_id
那麼我想獲得有best
類型的記錄,或者如果它不存在然後good
等,best>good>worst
到目前爲止。我只能得到返回的u_id
的第一行。根據列值選擇記錄
u_id type
1 best
2 good
3 worst
2 best
您可以優先考慮row_number
,併爲每個u_id選擇一行。
select u_id,type
from (
select u_id,type,
row_number() over(partition by u_id order by case when type='best' then 1
when type='good' then 2
when type='worst' then 3
else 4 end) as rn
from tablename
) t
where rn=1
with type (n, type) as (values
(1, 'best'),(2,'good'),(3,'worst')
)
select distinct on (u_id) u_id, type
from t inner join type using (type)
order by u_id, n
感謝那些工作 – jemcaj