Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 检索条件依赖于其他表的变量的平均值_Mysql - Fatal编程技术网

Mysql 检索条件依赖于其他表的变量的平均值

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

我试图计算表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
                                    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不是函数。谢谢您的回答。我可以用它解决我的问题,但是没有显式的内部连接。