当我包括以下子查询的2条注释掉线,似乎它永远,直到我的Sybase ASE 12.5服务器得到任何结果。如果没有这两条线的查询运行正常。是什么使错分组?

select days_played.day_played, count(distinct days_played.user_id) as OLD_users
from days_played inner join days_received
on days_played.day_played = days_received.day_received
and days_played.user_id = days_received.user_id
where days_received.min_bulk_MT > days_played.min_MO
and days_played.user_id in

(select sgia.user_id 
from days_played as sgia
where sgia.day_played < days_played.day_played
--group by sgia.user_id 
--having sum(sgia.B_first_msg) = 0
)

group by days_played.day_played
有帮助吗?

解决方案 3

OK,我发现了什么问题 我必须包括在子查询的用户ID:“凡days_played.user_id = sgia.user_id 和sgia.day_played

其他提示

了解查询确实使用显示计划,以显示解释什么。

在这种情况下,你不能通过使主查询的部分消除子查询?

你能尝试重写查询,如下所示?

select days_played.day_played,
       count(distinct days_played.user_id) as OLD_users
  from days_played
 inner join days_received on days_played.day_played = days_received.day_received
                         and days_played.user_id = days_received.user_id
 where days_received.min_bulk_MT > days_played.min_MO
   and 0 = (select sum(sgia.B_first_msg)
              from days_played as sgia
             where sgia.user_id = days_played.user_id
               and sgia.day_played < days_played.day_played
            )
 group by days_played.day_played

我想这应该给你更好的性能...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top