You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中合并单表两类数据并关联另一表的查询方案求助

解决MySQL关联UNION结果与温度表的查询问题

你遇到的语法错误是因为未将UNION生成的燃气增量结果封装为子查询/临时表,直接与temps表关联导致字段识别异常。正确的做法是先把UNION处理后的燃气数据作为子查询,再与temps表关联计算日均温度。

可行的SQL查询语句

假设你的UNION逻辑是分别处理total累计值(计算日增量)和m3直接增量值,完整查询如下:

SELECT 
    g.sum_date,
    SUM(g.sum_Gas) AS sum_Gas,
    AVG(t.temp) AS avg_temp
FROM (
    -- 替换为你实际使用的UNION处理逻辑
    SELECT 
        Datum AS sum_date,
        (total - LAG(total) OVER (ORDER BY Datum)) AS sum_Gas
    FROM Gas
    WHERE total IS NOT NULL
    UNION ALL
    SELECT 
        Datum AS sum_date,
        m3 AS sum_Gas
    FROM Gas
    WHERE m3 IS NOT NULL
) g
LEFT JOIN temps t ON g.sum_date = t.Datum
GROUP BY g.sum_date
ORDER BY g.sum_date;

关键说明

  • 将UNION结果放入子查询g中,确保数据库能正确识别临时表字段,再通过sum_date(即Datum)与temps表关联。
  • 使用LEFT JOIN可保证即使某日期无温度数据,燃气增量仍会被保留;若仅需保留有温度数据的日期,可替换为INNER JOIN。
  • 通过AVG(t.temp)计算对应日期的日均温度,结合GROUP BY g.sum_date实现按日期聚合。

内容的提问来源于stack exchange,提问作者Michael Fehér

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:25:38