このクエリでは、合計 x 個のレコードが返されます。そのクエリ内には、最大数のレコードを返すかどうかわからないサブクエリがいくつかあります。1 つの結果が最大制限未満の場合は、残りのスロットに次のクエリなどを入力します。limit 節の中で計算できないので、どうやって計算するかまだ模索中です。limit 句内で数学が利用可能である場合、私は次のようにします。
select *
from
(
(select * from profile where size='local' order by rand() limit 7) as local
join
(select * from profile where size='regional' order by rand() limit (13-count(local.id)) as regional
join
(select * from profile where size='national' order by rand() limit (19-(count(local.id)+count(regional.id))) as national
join
(select * from profile where size='international' order by rand() limit (25-(count(local.id)+count(regional.id)+count(national.id)))) as international
)