Mysql 检索条件依赖于其他表的变量的平均值
我试图计算表b中某个变量的平均值,该值取决于另一个表c中某个变量的不同值,该值基于一个条件 我设法检索表c的不同值并添加where子句。但我只得到第一个不同值的结果Mysql 检索条件依赖于其他表的变量的平均值,mysql,Mysql,我试图计算表b中某个变量的平均值,该值取决于另一个表c中某个变量的不同值,该值基于一个条件 我设法检索表c的不同值并添加where子句。但我只得到第一个不同值的结果 SELECT AVG(B.VAR1), ITERVAR FROM TableC C, TableB B WHERE C.ID = B.ID AND C.ITERVAR IN (SELECT DISTINCT(C.ITERVAR) AS ITERVAR
SELECT
AVG(B.VAR1),
ITERVAR
FROM TableC C, TableB B
WHERE C.ID = B.ID AND C.ITERVAR IN (SELECT DISTINCT(C.ITERVAR) AS ITERVAR
FROM TableC C WHERE WHERECLAUSE)
AND
WHERECLAUSE;
预期结果是:
VAR1 | ITERVAR
AVG value 1 | iter value 1
AVG value 2 | iter value 2
....
AVG value N | iter value N
我得到:
VAR1 | ITERVAR
AVG value 1 | iter value 1
我不明白为什么。这是一个部分更正的查询,主要是因为您没有向我们显示完整的代码。看起来您应该按ITERVAR列进行聚合,因此请尝试添加GROUP by子句:
SELECT
AVG(b.VAR1),
ITERVAR
FROM TableB b
INNER JOIN TableC b
ON b.id = c.id AND
c.ITERVAR IN (SELECT DISTINCT(x.ITERVAR) AS ITERVAR
FROM TableC x WHERE WHERECLAUSE) AND
<WHERECLAUSE>
GROUP BY
ITERVAR;
实际上,您当前的查询不会在大多数其他数据库上运行,也不会在MySQL中的某些服务器模式上运行。这是没有意义的,因为您选择的是一个平均值,它接管了整个表,并带有一个非聚合列值ITERVAR。不清楚您希望MySQL从整个表中的所有值中为您提供哪个ITERVAR值。但是在这里添加groupby更有意义。因为和where子句;必须是GROUP BY子句。请注意,DISTINCT不是函数。谢谢您的回答。我可以用它解决我的问题,但是没有显式的内部连接。