返回 JOIN 查询中列的 SUM

Posted

技术标签:

【中文标题】返回 JOIN 查询中列的 SUM【英文标题】:Return the SUM of column in JOIN query 【发布时间】:2016-04-05 10:46:30 【问题描述】:

我有一个包含多个联接的查询,我想从 JOIN 评论 结果中返回一列的总和...有什么想法吗?

SELECT *,user.id AS u_id
FROM user_connects
    JOIN user ON user_connects.user_y = user.id
    JOIN reviews ON user_connects.user_y = reviews.user
 WHERE user_connects.user_x = 1
 LIMIT 25

我想返回类似这样的内容,其中 [1] 索引 totalcolumls 是评论表的 SUM 结果:

array(1) 
  [0]=>
  object(stdClass)#26 (12) 
    ["id"]=>
    string(1) "2"
    ["user_x"]=>
    string(1) "1"
    ["user_y"]=>
    string(1) "2"
    ["date_created"]=>
    string(10) "1457593440"
    ["first_name"]=>
    string(6) "Donald"
    ["last_name"]=>
    string(5) "Trump"
    ["age"]=>
    string(2) "68"
    ["gender"]=>
    string(4) "Male"
    ["img_url"]=>
    string(10) "donald.jpg"
    ["keto_score"]=>
    string(1) "5"
    ["date_created_dt"]=>
    string(19) "2016-03-09 07:00:00"
    ["u_id"]=>
    string(1) "2"
  ,
  [1]=>
  object(stdClass)#26 (12) 
    ["totalcolumls"]=>
    string(1) "2"
   

【问题讨论】:

限制,但没有订单... 你确定吗? 我认为样本数据和期望的结果将有助于解释您想要做什么。 查看GROUP BY,结合SUM() 任何与上述相关的 GROUP BY 示例 漂亮的虚拟数据:) 【参考方案1】:

你可以这样试试

SELECT count(reviews.*) AS total_review_column, user_connects.*, reviews.*, user.*, user.id AS u_id
FROM user_connects
    JOIN user ON user_connects.user_y = user.id
    JOIN reviews ON user_connects.user_y = reviews.user
 WHERE user_connects.user_x = 1
 group by reviews.user

【讨论】:

以上是关于返回 JOIN 查询中列的 SUM的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 基于选择查询中列的第一个字符进行过滤

SQL查询sum和max一个表,join得到另一个表的对应值

更新查询以根据另一表中的值更改一个表中列的现有值

更新查询以根据不同表中的值更改一个表中列的现有值

按 BigQuery 中列段的最大值返回列名

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?