繁体   English   中英

将两个查询合并为一个

[英]Merge two queries into one

我有两个查询,我想合并为一个。

第一个看起来像这样;

SELECT t.name,
       t.score,
       COUNT(m.user_id) AS memberCount
       FROM team AS t, team_member AS m
       WHERE t.team_id = '$id' AND m.team_id = '$id'

第二个看起来像这样;

SELECT COUNT(t.team_id) AS rank
       FROM team AS t 
       WHERE t.score > (SELECT t.score
                               FROM team AS t 
                               WHERE t.team_id = '$id')

我怀疑JOIN将成为解决方案的一部分,我只是不知道如何。 任何想法表示赞赏。

例如,您可以在第一个查询的SELECT子句中插入第二个查询权限:

SELECT 
  t.name,
  t.score,
  (SELECT 
    COUNT(t.team_id) AS rank 
  FROM 
    team AS t 
  WHERE 
   t.score > (SELECT t.score FROM team AS t WHERE t.team_id = '$id')
  ) as rank,
  COUNT(m.user_id) AS memberCount
FROM 
  team AS t, team_member AS m
WHERE 
  t.team_id = '$id' AND m.team_id = '$id'

您可以使用UNION

SELECT t.name,
   t.score,
   COUNT(m.user_id) AS memberCount
   FROM team AS t, team_member AS m
   WHERE t.team_id = '$id' AND m.team_id = '$id'
UNION
SELECT COUNT(t.team_id) AS rank
   FROM team AS t 
   WHERE t.score > (SELECT t.score
                           FROM team AS t 
                           WHERE t.team_id = '$id')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM