如何将不同表中的两列相加 MySQL

我需要对位于不同表中并按 session_id 分组的两个不同列的数据求和.....

如何将不同表中的两列相加 MySQL

如何将不同表中的两列相加 MySQL

我需要对按 session_id 分组的 used_points + price_points 列求和

这是我希望得到的结果

如何将不同表中的两列相加 MySQL

我已经尝试过这个查询,但我只设法对数据进行了分组,但我无法通过 session_id 对其进行总结

SELECT session_details.session_id,SUM(session_details.spent_points) AS total_sum_session FROM session_details WHERE session_details.session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") GROUP BY session_details.session_id UNION SELECT template_sales.session_id,SUM(template_sales.price_points) AS total_sum_sales FROM template_sales WHERE template_sales.session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") GROUP BY template_sales.session_id 
coolio0303 回答:如何将不同表中的两列相加 MySQL

首先使用 UNION ALL 从您想要的 2 个表中获取所有行,然后聚合:

SELECT session_id,SUM(points) AS total_points
FROM (
  SELECT session_id,spent_points AS points
  FROM session_details 
  WHERE session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
  UNION ALL
  SELECT session_id,price_points
  FROM template_sales 
  WHERE session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
) t
GROUP BY session_id
,

你就快到了:

WITH union_rows (session_id,points) AS (
        SELECT session_details.session_id,session_details.spent_points
          FROM session_details
         WHERE session_details.session_id IN ('-Meagevy6y9ukbmFXvB7','-Meak6dG9iqvHWfAGQvy')
         UNION ALL
        SELECT template_sales.session_id,template_sales.price_points
          FROM template_sales
         WHERE template_sales.session_id IN ('-Meagevy6y9ukbmFXvB7','-Meak6dG9iqvHWfAGQvy')
     )
SELECT session_id,SUM(points) AS total_sum
  FROM union_rows
 GROUP BY session_id
;

如果您有旧版本的 MySQL,没有 WITH clause 支持,请改用派生表。

session_id 过滤器可以在 CTE 术语之外完成,但之后您也可以携带所有其他行,直到过滤器被处理。

,

也许您可以使用 session_id 在这两个表之间进行 JOIN。 之后,您可以将两个属性相加。

它会是这样的:

SELECT session_details.session_id,SUM(SD.SPENT_POINTS + TSS.PRICE_POINTS ) AS total_sum_session 
FROM session_details SD
JOIN template_sales.session_id TSS ON SD.SESSION_ID = TSS.SESSION_ID
WHERE SD.session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
GROUP BY SD.session_id 
,

试试这个:

SELECT A.session_id,SUM(A.Total) AS Total
FROM 
(
  SELECT session_details.session_id,session_details.spent_points AS Total
  FROM session_details 
  WHERE session_details.session_id IN ("-Meagevy6y9ukbmFXvB7","- 
  Meak6dG9iqvHWfAGQvy") 

  UNION ALL

  SELECT template_sales.session_id,template_sales.price_points AS Total
  FROM template_sales 
  WHERE template_sales.session_id 
  IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
) AS A
GROUP BY A.session_id
本文链接:https://www.f2er.com/20065.html

大家都在问