联表查询,怎么一步到位?

游戏厂商表l_game_provider: id,name,follownum
游戏表l_game: id,providerid,downloadnum
需求:

  首先按照l_game_provider 的 follownum字段降序 拿到厂商排行top3
  然后根据厂商关联的游戏按照 l_game 的 downloadnum字段降序
  

例如:厂商顺序为 厂商一、厂商二、厂商三

查询结果应为:

         厂商一  王者荣耀
         厂商一  龙之谷
         厂商二  倩女幽魂
         厂商三  永恒纪元
         厂商三  传奇霸业

错误sql:
select b.providername,b.name from (select id from l_game_provider order by follownum desc limit 3) a inner join l_game b on a.id = b.providerid order by downloadnum desc;

才疏学浅 求大佬支招一步到位的sql

阅读 2.1k
1 个回答
SELECT B.name,A.name FROM l_game A 
  LEFT JOIN l_game_provider B ON A.providerid=B.id 
WHERE A.providerid IN (SELECT id FROM l_game_provider ORDER BY follownum DESC LIMIT 3)
ORDER BY A.downloadnum DESC
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题