MYSQL从两行中随机选择

问题描述:

有人可以帮助我解决这个问题。 我有这个表样本: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

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

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