首先使用 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