首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >组合多个复合mysql语句

组合多个复合mysql语句
EN

Stack Overflow用户
提问于 2016-09-28 10:04:02
回答 1查看 98关注 0票数 0

首先,我有以下sql语句:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT * FROM members
    WHERE username IN (
      SELECT friend2 as username FROM list_friends 
          WHERE (friend1 = 'user' AND friend2 <> 'user') 
          UNION
      SELECT friend1 as username FROM list_friends
          WHERE (friend2 = 'user' AND friend1 <> 'user')                                       
    )

上面的代码运行得很好。它返回“members”表中与给定用户的朋友列表匹配的所有行,该列表是通过在表list_friends中搜索给定用户并从列friend1或friend2中获取朋友名称来创建的。

就像我说的,它工作得天衣无缝。

接下来,我有以下sql语句:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT username,
(SELECT COUNT(*) FROM sites WHERE username = 'user') 
+ (SELECT COUNT(*) FROM banners WHERE username = 'user') 
+ (SELECT COUNT(*) FROM stream_updates WHERE username = 'user')
    AS cnt from members WHERE username = 'user'

这将组合给定行的计数,并将所有计数的总和输出为列cnt。

我想把这两个语句组合起来,这样我就可以得到一个返回friend,cnt的结果。

示例输出将非常简单:

代码语言:javascript
代码运行次数:0
运行
复制
   username    |  cnt
 ----------------------
  a friend     |  6525
  diff friend  |   983
  yet again    |  3485

我可以很容易地在两个php循环中运行它,首先从第一个查询中获得朋友的名字,然后使用foreach并在第一个查询的循环中运行第二个查询,我只是想知道是否有更好的方法,或者是一种将语句组合成一个语句的方法来获得上面的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-28 10:16:01

我认为您只需要相关子查询:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT username,
       ( (SELECT COUNT(*) FROM sites s WHERE s.username = f.username) +
         (SELECT COUNT(*) FROM banners b WHERE b.username = f.username) +
         (SELECT COUNT(*) FROM stream_updates su WHERE su.username = f.username)
       ) as cnt
FROM (SELECT friend2 as username
      FROM list_friends 
      WHERE friend1 = 'user' AND friend2 <> 'user'
      UNION
      SELECT friend1 as username
      FROM list_friends
      WHERE friend2 = 'user' AND friend1 <> 'user'                                     
    ) f;

注意:这里不需要members表。您已经从其他表中获得了username

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

https://stackoverflow.com/questions/39736903

复制
相关文章

相似问题

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