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
相关产品推荐
相关产品推荐

