首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化sqlfiddle查询( PostgreSQL )

优化sqlfiddle查询( PostgreSQL )
EN

Stack Overflow用户
提问于 2014-02-10 23:48:53
回答 1查看 465关注 0票数 0

我有两个名为playerteam的表,它们通过第三个名为player_team的表以多对多的关系绑定在一起。

可以找到表结构和当前查询:http://sqlfiddle.com/#!2/e6db4/18

我需要一个查询,它返回球员的数据,以及team.id,其中包括球员的最高评级。此外,如果评级为<= X,则应排除该玩家。

示例查询返回正确的结果,但效率很低。

显然,通过只访问每个表的行一次就可以获得相同的结果,但问题是如何实现这一点?(我更喜欢使用PostgreSQL方言的回复)

EN

回答 1

Stack Overflow用户

发布于 2014-02-11 00:12:47

下面是一个您可以尝试的查询:

代码语言:javascript
复制
with all_comb as (
select p.id as PLID,
       t.id as TID,
       t.rating as RATING
  from player p,
       team t,
       player_team pt
 where p.id = pt.pid
   and t.id = pt.tid
   and t.rating >0)

select distinct
       a.PLID,
       a.TID,
       a.RATING
  from all_comb a
 where a.RATING = (
       select max(b.RATING)
         from all_comb b
        where a.PLID = b.PLID)
 order by PLID;

sqlfiddle是here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21681675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档