Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 在具有SUM和group by的子查询中引用父查询中的表_Mysql_Sql - Fatal编程技术网

Mysql 在具有SUM和group by的子查询中引用父查询中的表

Mysql 在具有SUM和group by的子查询中引用父查询中的表,mysql,sql,Mysql,Sql,我的查询如下所示: SELECT tablea.field, ( SELECT sum(count) FROM ( SELECT count(distinct(subtable.regdate)) as count FROM subtable where subtable.regid = tableb.regid GROUP BY subtable.userid ) as a ) as thesum FROM tablea LEFT J

我的查询如下所示:

SELECT tablea.field,
(
 SELECT sum(count) FROM
 (
      SELECT count(distinct(subtable.regdate)) as count
      FROM subtable
      where subtable.regid = tableb.regid
      GROUP BY subtable.userid

 ) as a

) as thesum
FROM tablea 
LEFT JOIN tableb on tableb.id = tablea.tableaid
GROUP BY tablea.field2
问题是,在我的子查询中,引用的表tableb是未知的,因此我得到了错误:“where子句”中的未知列“tableb.regid”

我怎样才能解决这个问题


谢谢

您可以将子查询移动到from子句:


但是,您的原始查询应该可以工作。我怀疑这个名字有错。或者可能tableb实际上位于子查询中,在这种情况下,它将超出范围,或者它有一个别名,而您正在使用基表名。

能否将子查询中的tableb.regid替换为tableb中的select regid作为tablebregid
SELECT tablea.field, thesum
FROM tablea left join
     tableb
     on tableb.id = tablea.tableaid left join
     (select st.regid, sum(count) as thesum
      from (SELECT st.regid, st.userid, count(distinct(st.regdate)) as count
            FROM subtable st
            GROUP BY st.regid, st.userid
           ) st
      group by st.regid
     ) st
     on st.regid = tableb.regid
GROUP BY tablea.field2;