2012-02-08 191 views
0

有人可以幫助我解決這個問題。 我有這個表樣本:MYSQL從兩行中隨機選擇

文件表

  • UID
  • 文件
  • uploaded_on_date
  • VIEW_COUNT

我要考慮的是前30名最最近上傳的文件和前30名最多瀏覽文件然後從他們隨機選擇限制10

我是新來的這個mysql複雜查詢。示例查詢會很好,我將能夠理解它。 謝謝。

+0

'ORDER BY RAND()'型解決方案將是非常緩慢的,當行數開始增長,只是谷歌'ORDER BY蘭特slow'。當然,從2 * 30行選擇時不會注意到這一點。 – biziclop 2012-02-08 10:31:24

回答

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 2012-02-08 14:38:11

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 2012-02-08 10:29:29

+0

感謝您的答覆vulkanino和xdazz,真的很接近時間回答非常真棒。 – xiomai 2012-02-08 14:37:59