繁体   English   中英

同一查询中不同表的MYSQL Sum和Count

[英]MYSQL Sum and Count on different tables, in same query

我试图获得一些统计数据; 来自3个不同表格的总链接,用户和视图。 我正在尝试什么:

SELECT SUM(p.views), COUNT(c.id), COUNT(u.id)
FROM studenkel_userprefs as p, studenkel_content as c, studenkel_users as u

如果我在三个不同的查询中分别进行处理,则它们可以正常工作,但结果却比我想要的高出数千倍。 我猜他们会以某种方式彼此繁殖,提示?

谢谢

编辑:谢谢大家,非常感谢您的帮助,整理出来。

您在from中所做的事情称为没有条件的隐式内部联接。

这意味着您的最终视图具有p.rows * c.rows * u.rows行,这就是为什么您得到怪异结果的原因。

如果您有3个问题,请分别询问,不要一次全部询问。

另外,如果您确实只希望一个请求,则可以使用以下丑陋的形式:

SELECT
  SELECT SUM(views) FROM studenkel_userprefs as "sum_userprefs",
  SELECT COUNT(id) FROM studenkel_content as "cnt_content",
  SELECT COUNT(u.id) FROM studenkel_users as "cnt_users"
FROM DUAL;

你被允许“作弊”吗?

SELECT
    (
        SELECT 
            SUM(p.views)
        FROM 
            studenkel_userprefs as p
    ) as `views`,
    (
        SELECT
            COUNT(c.id)
        FROM
            studenkel_content as c
    ) as `content_count`,
    (
        SELECT
            COUNT(u.id)
        FROM
            studenkel_users as u
    ) as `user_count`

这是因为您要对表进行笛卡尔联接,该联接将一个表中的行数乘以另一个表中的行数。 无需以JOIN ... ON格式指定JOIN ... ON ,也无需通过在WHERE子句中指定JOIN ... ON条件,就可以得到唯一的结果。

暂无
暂无

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

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