sql求和并从第二个查询中添加两列

ndh0cuux  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(303)

我正在尝试将两位逻辑组合到一个sql查询中,以加快代码库的有效性,我目前有两个类似这样的查询(伪代码):

// Looping each user in table
$statement = "SELECT id FROM users";

// I then loop that statement, combining data from sub-query
{
  // Get the "summing" data from table in reference to looped user
  $second_statement = "SELECT add_col_1,add_col_2FROM users WHERE ref = id"

  // Combine add_col_1, and add_col_2 together
  array_sum($second_statement)
}

我想要的是第二条语句的和,从第一个查询中得到id SELECT id FROM users 然后在列名下研究该表以获取对该表的引用 ref 然后我可以将这些行中的每一列添加到一起。
我这样做不是为了得到一条语句而不是两条语句,这是因为一旦应用程序扩展,必须以指数形式查询成千上万的用户是不好的。
我试图将这两个循环结合起来的语句是:

SELECT
   id,
   (SUM(SELECT col_add_1+col_add_2 FROM users WHERE ref = a.id)) AS total
FROM users a

执行错误。

dsekswqp

dsekswqp1#

在这里,您只需要连接到它自己,在一个调用中链接所有项,然后按id对结果进行分组,这样总和就可以对所有链接项起作用。

SELECT
  a.id,
  SUM(b.col_add_1 + b.coll_add_2)
FROM
  users a
LEFT JOIN
  users b
ON
  a.id = b.ref
GROUP BY
  a.id
new9mtju

new9mtju2#

您有一个错误,因为您在执行聚合时没有涉及任何 group by 条款。因此,您应该将查询重写为

SELECT id,
       (SELECT SUM(col_add_1+col_add_2) FROM users WHERE ref = a.id) AS total
FROM users a
GROUP BY id;

相关问题