私はデータと呼ばれるテーブルを持っています:
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
私が欲しいのは、の上位 50 行にあるtableの行のサブセットです。data
val
dataFrequencies
私の現在の解決策はやや回り道です。dataFrequencies の上位 50 行を含むテーブル 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
これを行う何らかの直接クエリ方法があると確信しています! 助けてくれてありがとう!