2012-02-08 20 views
0

誰かがこのクエリを手伝ってくれますか? 私はサンプルのため、このテーブルを持っている:MYSQL 2行からランダムに選択

ファイルテーブルを

  • UID
  • ファイル
  • uploaded_on_date
  • 私が検討して欲しいVIEW_COUNT

は最もトップ30です最近アップロードされたファイルとトップ30を最も表示ファイルランダムにを選択し、を1でランダムに選択します。

私はこのMySQLの複雑なクエリに慣れていません。サンプルクエリは良いと私はそれを理解することができます。おかげさまで

+0

'行数が成長して起動時にRAND BY ORDER()'タイプのソリューションは、ちょうどランドのslow'によって 'オーダーのためのgoogle、非常に遅くなります。もちろん、2 * 30の行から選択するときは気付かないでしょう。 – biziclop

答えて

2
SELECT 
    * 
FROM 
(
SELECT 
    * 
FROM 
    tablefile 
ORDER BY 
    uploaded_on_date DESC 
LIMIT 30 
UNION SELECT 
* 
FROM 
    tablefile 
ORDER BY 
    view_count DESC 
LIMIT 30 
) 
ORDER BY 
    RAND() 
LIMIT 10; 
+0

返信ありがとうございました。vulkaninoとxdazz、本当に近い時間は非常に素晴らしい答えました。 – xiomai

1
select * from (
    select * from table order by upload_on_date desc limit 30 
    union 
    select * from table order by view_count desc limit 30) t 
order by rand() limit 10 
+0

ああ、まったく同じ回答です! – vulkanino

+0

お返事ありがとうございます。vulkaninoとxdazz、本当に近い時間は非常に素晴らしい答えました。 – xiomai

関連する問題