पोस्टग्रेज़ विशिष्ट (और सबसे तेज़) समाधान:
select distinct on (out_id) *
from foo
order by out_id, id desc;
विंडो फ़ंक्शन का उपयोग कर मानक SQL समाधान (दूसरा सबसे तेज़)
select id, x_part, y_part, out_id, out_idx
from (
select id, x_part, y_part, out_id, out_idx,
row_number() over (partition by out_id order by id desc) as rn
from foo
) t
where rn = 1
order by id;
ध्यान दें कि दोनों समाधान केवल प्रत्येक id
लौटाएंगे एक बार, भले ही अनेक out_id
हों मूल्य जो समान हैं। यदि आप चाहते हैं कि वे सभी वापस आ जाएं, तो dense_rank()
. का उपयोग करें row_number()
. के बजाय