列出每个类别的最新产品,postqresql查询

列出每个类别的最新产品,postqresql查询,sql,postgresql,subquery,Sql,Postgresql,Subquery,列出每个类别中最新的产品您可以使用的行号() 或者您也可以在 select * from ( select *,row_number() over(parition by userid,category_id order by date_update) as rn from tablename )A where rn=1 您可以使用row\u number() 或者您也可以在 select * from ( select *,row_number() over(parition by user

列出每个类别中最新的产品

您可以使用的
行号()

或者您也可以在

select * from
(
select *,row_number() over(parition by userid,category_id order by date_update) as rn
from tablename
)A where rn=1

您可以使用
row\u number()

或者您也可以在

select * from
(
select *,row_number() over(parition by userid,category_id order by date_update) as rn
from tablename
)A where rn=1
列出每个类别中最新的产品

您可以在上使用
distinct。假设更新日期为空,则需要创建日期:

select distinct on (user_id,category_id) *
FROM tablename
ORDER BY user_id,category_id, date_update
如果您想要这种每个用户/类别的组合,逻辑将是:

select distinct on (category_id) t.*
from t
order by category_id, coalesce(date_update, date_added) desc;
列出每个类别中最新的产品

您可以在
上使用
distinct。假设更新日期为空,则需要创建日期:

select distinct on (user_id,category_id) *
FROM tablename
ORDER BY user_id,category_id, date_update
如果您想要这种每个用户/类别的组合,逻辑将是:

select distinct on (category_id) t.*
from t
order by category_id, coalesce(date_update, date_added) desc;
使用窗口函数

select distinct on (user_id, category_id) t.*
from t
order by user_id, category_id, coalesce(date_update, date_added) desc;
使用窗口函数

select distinct on (user_id, category_id) t.*
from t
order by user_id, category_id, coalesce(date_update, date_added) desc;

但是您的回答返回了一个用户,ı希望所有用户都这样做like@user14184824,我已经更新了答案-您现在可以检查我已检查,但只需从不同的位置返回一个用户categories@user14184824,在这里创建您的表-@user14184824,检查这里-但是您的回答返回了一个用户,ı希望所有用户都是这个用户like@user14184824,我已经更新了答案-您现在可以检查我已检查,但只需从不同的位置返回一个用户categories@user14184824,在此处创建表-@user14184824,选中此处-(1)显示所需结果。(2) 如何处理空值?(1)显示所需的结果。(2) 如何处理空值?