去重的同时根据时间排序、分页

select * from (SELECT
max(a.“type”) as type,max(a.workspace_type) as workspace_type,max(a.description) as description,workspace_object_id,max(create_date) as create_date
from
(
select * from “public”.user_file_folder a where a.type=0 and a.workspace_type=0 and a.user_id = #{userId} and exists(select 1 from workspace.personal_file b where b.versioned_file_id=a.workspace_object_id)
union all
select * from “public”.user_file_folder a where a.type=1 and a.workspace_type=0 and a.user_id = #{userId} and exists(select 1 from workspace.personal_folder b where b.id=a.workspace_object_id)
union all
select * from “public”.user_file_folder a where a.type=0 and a.workspace_type=1 and a.user_id = #{userId} and exists(select 1 from workspace.group_file b where b.versioned_file_id=a.workspace_object_id)
union all
select * from “public”.user_file_folder a where a.type=1 and a.workspace_type=1 and a.user_id = #{userId} and exists(select 1 from workspace.group_folder b where b.id=a.workspace_object_id)
union all
select * from “public”.user_file_folder a where a.type=0 and a.workspace_type=2 and a.user_id = #{userId} and exists(select 1 from workspace.public_file b where b.versioned_file_id=a.workspace_object_id)
union all
select * from “public”.user_file_folder a where a.type=1 and a.workspace_type=2 and a.user_id = #{userId} and exists(select 1 from workspace.public_folder b where b.id=a.workspace_object_id)
)
as a group by a.workspace_object_id) as g order by create_date DESC limit #{num}

猜你喜欢

转载自blog.csdn.net/xuzhe777/article/details/84857012