【发布时间】:2011-10-28 14:55:54
【问题描述】:
我有一个问题,我试图计算每个给定 id 的值的总和。我决定使用子查询来做到这一点(通常我会使用连接,但我也为每个子查询保留一个计数器以用于剪辑目的 - see this question 了解更多信息)。为了这个问题,假设我有以下 MySQL 查询:
/* 1. */ SELECT
/* 2. */ t1.experiement_id,
/* 3. */ (SELECT sum(x.size)
/* 4. */ FROM (SELECT size, ( @rownum := @rownum + 1 ) AS `rownum`
/* 5. */ FROM data AS t0
/* 6. */ JOIN ( select @rownum := 0 )
/* 7. */ WHERE t0.experiment_id = t1.experiment_id
/* 8. */ ORDER BY size) AS x
/* 9. */ WHERE x.rownum <= t2.clip_index ) AS `sum`
/* 10. */
/* 11. */ FROM data AS t1
/* 12. */ JOIN data_clip AS t2 USING (experiment_id)
/* 13. */
/* 14. */ GROUP BY t1.experiment_id
问题发生在行 7 上,我试图隔离子查询中与 experiement_id 匹配的行 - 我收到一个错误,即 t1.experiement_id 是未知列。这只发生在嵌套超过 1 级的查询上。就像检查一样,我注意到t2.clip_index 处理得很好。如果我注释掉第 7 行,则查询返回正常(尽管结果错误)。知道如何让子查询识别父表的列以在我的条件下使用吗?谢谢。
【问题讨论】:
-
我也遇到了同样的问题,你找到解决办法了吗?
标签: mysql subquery aggregate-functions nested-query