SQLite 版本 3.3.6
sqlite中有一个表
CREATE TABLE stats (Date TEXT , Sub TEXT , DELAY95TH INT ) ;
每行是:
Date |Sub|Delay
2012-06-25|212|750
2012-06-25|214|1180
2012-06-25|216|14902
任务是通过汇总延迟获取 Sub 来自前 10 名的所有记录
执行此操作的 SQL:
Select
Date, Sub, Delay
from
stats
where
Sub in (select Sub
from stats
group by Sub
order by SUM(Delay) desc limit 10 ) ;
但是,它不会产生任何结果。一旦您删除“order by”子句,查询就会开始工作。
因此,例如:
select
Date, Sub, Delay
from
stats
where
Sub in (select Sub from stats group by Sub limit 10);
运作良好并产生预期的效果。
更有什者。在同一实例中也有表:
CREATE TABLE data ( Date DATE , Sub INT, Subcont TEXT, Session INT, MsgType TEXT, Score INT);
并选择与有问题的类似,工作正常:
select
Subcont, MsgType, SUM(Score)
from
data
where
Subcont in (select Subcont
from data
group by Subcont
order by sum(Score) desc limit 10)
group by
Subcont, MsgType
order by
Subcont, MsgType;
它的作用几乎相同:通过汇总 Score 识别前 10 个 Subcont,并显示包含这些 Subcont 的所有记录。它有效!