我有一个名为数据的表:
create table data
(
ID int primary key,
val varchar(50),
forID int
constraint fk_forID foreign key (forID) references otherTable(forID)
)
我有一个名为 dataFrequencies 的视图
create view dataFrequencies (val, freq)
as select val, COUNT(*)
from data
group by val
order by freq desc
我想要的是表中前五十行中的行子集。data
val
dataFrequencies
我目前的解决方案有点迂回。我创建了一个包含前 50 行 dataFrequencies 的表 topFifty。然后我创建一个视图 topFiftyVals,它从数据中选择所有数据,但在表 topFifty 上进行内部连接:
create table topFifty
(
val varchar(50) primary key
)
insert into topFifty select val from dataFrequencies order by frequency desc limit 50;
create view topFiftyVals (ID, val, forID)
as select *
from data d
inner join topFifty tf on d.val = tf.val
我确信有某种直接查询方法可以做到这一点!感谢所有的帮助!