MySQL 多个表查询并整合起来按某些同一含义的字段排序

如题,多个表查询并整合起来按某些同一含义的字段排序,各个表的字段名可能都不一样

具体场景:
app_member 表有两个字段,app_id 表示用户参与的 app,user_id 表示该用户
app 表表示 app,user_id 表示 app 的所有者

现给定 user_id 要求查询出此用户拥有的和参与的所有 app,并按 app 的创建时间倒序排

可以先查出 id 倒序排:

select id from app as id where user_id = 4757311 union 
select app_id from app_member as id where user_id = 4757311 order by id desc

根据查询结果分析可知 union 的优先级高于 order by

然后和 app 表 join 即可得出结果:

select * from (select id from app as id where user_id = 4757311 union 
select app_id from app_member as id where user_id = 4757311) a 
join app on app.id = a.id order by app.created_at desc

你可能感兴趣的:(MySQL 多个表查询并整合起来按某些同一含义的字段排序)