Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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,请原谅,我不能发布一些问题的完整查询,但在查询中,如果我所拥有的不足,请在评论中回复,我可以重构完整查询。我的最后一部分是这样的: path p1 on as1.UpdateID = u_d1.UpdateID join path p2 on p2.UpdateID = u_d2.UpdateID ; 我还有一个类似的问题 SELECT Count(People), UpdateID FROM path Group BY UpdateID; 我想在现有查询的最后一部分添加此查询。我尝试

请原谅,我不能发布一些问题的完整查询,但在查询中,如果我所拥有的不足,请在评论中回复,我可以重构完整查询。我的最后一部分是这样的:

path p1
 on as1.UpdateID = u_d1.UpdateID join
path p2 
on p2.UpdateID = u_d2.UpdateID  ;
我还有一个类似的问题

SELECT Count(People), UpdateID FROM path Group BY UpdateID;
我想在现有查询的最后一部分添加此查询。我尝试过类似的方法,但查询需要花费很长时间:

 path p1
 on p1.UpdateID = u_d1.UpdateID join
 path p2 
on as2.UpdateID = u_d2.UpdateID HAVING SUM(p2.People) = SUM(p1.People) ;
我第一次尝试“
和SUM(as2.People)=SUM(as1.People);
”但我想那是错的


有什么办法可以这样做吗?如果需要更多信息,请在向下投票前询问。

类似这样的,愚蠢而直接,用相应的查询替换“路径”表

但是,如果它能工作,它将是缓慢和低效的——MySQL在聚合查询方面的性能很差。 更好的方法是创建具有预先计算的和的“缓存”表,然后连接该表

然后


不要忘记定期更新缓存表。

这很有效!谢谢,第二个想法很好地解决了
(SELECT Count(People) cnt, UpdateID FROM path Group BY UpdateID) as p1
 on as1.UpdateID = u_d1.UpdateID join
(SELECT Count(People) cnt, UpdateID FROM path Group BY UpdateID) as p2 
 on p2.UpdateID = u_d2.UpdateID and p1.cnt = p2.cnt ;
INSERT cache_table (UpdateId, cnt)
SELECT UpdateID, Count(People) cnt FROM path Group BY UpdateID
on duplicate key update cache_table.cnt = values(cnt)
cache_table as p1
 on as1.UpdateID = u_d1.UpdateID join
cache_table as p2 
 on p2.UpdateID = u_d2.UpdateID and p1.cnt = p2.cnt ;