【问题标题】:I want to combine multiple tables result count in one result using MySQl我想使用 MySQl 将多个表结果计数合并到一个结果中
【发布时间】:2012-04-27 07:43:52
【问题描述】:

我想使用 MySql查看所需结果)将多个表的结果计数合并到一个结果中,但如果您有任何疑问,我会对此感到困惑或对此进行优化的方法,请回答我或帮助绝对感谢我自己也尝试过这个 QueryUnion 但严重没有成功(请参阅查询示例 em>)

需要结果

post  post_comment_likes  post_comments  post_likes
2     0                   3              0

查询

SELECT COUNT(*) AS `post` FROM post WHERE user_id = "123456" UNION
SELECT COUNT(*) AS `post_comment_likes` FROM post_comment_likes WHERE user_id = "123456" UNION 
SELECT COUNT(*) AS `post_comments` FROM post_comments WHERE user_id = "123456" UNION
SELECT COUNT(*) AS `post_likes` FROM post_likes WHERE user_id = "123456" 

【问题讨论】:

    标签: mysql database optimization logic


    【解决方案1】:
    set @post = 0;
    set @post_comment_likes = 0;
    set @post_comments = 0;
    Set @post_likes = 0;
    
    
     select count(*) into @post from .......;
     select count(*) into @post_comment_likes from ......;
     select count(*) into @post_comments from ......;
     select count(*) into @post_likes from ......;
    
    select (@post + @post_comment_likes + @post_comments + @post_likes) ;
    

    在上面的代码中,@post、@post_comment_likes、@post_cmets、@post_likes 是会话变量,你需要在它们前面加上'@'字符
    使用上面的代码,您可以访问每个表的计数。

    【讨论】:

      【解决方案2】:
      SELECT (SELECT COUNT(*) 
                FROM post 
               WHERE user_id = "123456") AS `post`
            ,(SELECT COUNT(*) 
                FROM post_comment_likes
               WHERE user_id = "123456") AS `post_comment_likes`
            ,(SELECT COUNT(*)
                FROM post_comments
               WHERE user_id = "123456") AS `post_comments`
            ,(SELECT COUNT(*)
                FROM post_likes
               WHERE user_id = "123456") AS `post_likes`
      

      您应该将COUNT(*) 替换为COUNT(<some fieldname>),并且可以为用户ID 使用变量。

      【讨论】:

        【解决方案3】:

        请尝试下面给出的mysql查询

        SELECT
        (SELECT COUNT(*) AS `post` FROM post WHERE user_id = "123456" ) AS post , 
        (SELECT COUNT(*) AS `post_comment_likes` FROM post_comment_likes WHERE user_id ="123456") AS post_comment_likes,
        (SELECT COUNT(*) AS `post_comments` FROM post_comments WHERE user_id = "123456") AS post_comments , 
        (SELECT COUNT(*) AS `post_likes` FROM post_likes WHERE user_id = "123456" ) AS post_likes
        

        谢谢

        【讨论】:

          猜你喜欢
          • 2022-01-20
          • 1970-01-01
          • 1970-01-01
          • 2019-07-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-16
          • 2019-08-04
          • 1970-01-01
          相关资源
          最近更新 更多