Mysql 在左联接子查询中使用主表中的字段

Mysql 在左联接子查询中使用主表中的字段,mysql,sql,Mysql,Sql,我想通过帮助日历表选择值。查询如下所示: SELECT t1.starttime, t1.endtime, t2.sum_val1, t2.avg_val2 FROM eco_546d9dff955b5_help t1 LEFT JOIN ( SELECT SUM(val1) AS sum_val1, AVG(val2) AS avg_val2 FROM eco_546d9dff955b5

我想通过帮助日历表选择值。查询如下所示:

SELECT
    t1.starttime,
    t1.endtime,
    t2.sum_val1,
    t2.avg_val2
FROM
    eco_546d9dff955b5_help t1
LEFT JOIN (
    SELECT
        SUM(val1) AS sum_val1,
        AVG(val2) AS avg_val2
    FROM
        eco_546d9dff955b5
    WHERE
        `timestamp` > t1.starttime
    AND `timestamp` <= t1.endtime
) t2 ON t1.starttime <= t2.`timestamp` AND t1.endtime >= t2.`timestamp`

但是在运行这段代码时,我在where子句中得到了未知的列t1.starttime?是否可以使t1.starttime可用于子查询?

考虑提供适当的DDL和相应的所需结果您希望得到什么?只要使用左连接,就可以从内部选择中删除WHERE子句。结果是一样的。如果表eco_546d9dff955b5不包含数百万条记录,我建议这样做,以避免出现性能问题。