2012-10-18 19 views
0

只是有一个简单的问题,这是通过PHP完成的一件简单的事情,但我确信必须有一种方法可以做到这一点通过MySQL。如何将一个查询的值传递给另一个查询MySQL而不使用PHP

我有一个表的列id,element_id,video_link,其他几个视图。

我想要做的是从随机选择前5个最常观看的视频中选择一个。

E.g

SELECT * 
    FROM table_name 
WHERE "In human terms order by views descending and then select 1 of the top 5 at random" 

这是非常简单的通过PHP做的,我会用,如果没有办法通过MySQL来做到这一点,但它会很高兴知道!

回答

1
SELECT * 
FROM (
    SELECT * 
    FROM `tablename` 
    ORDER BY id DESC 
    LIMIT 5 
) AS inner_table 
ORDER BY RAND() 
+0

太棒了!这只是做了这份工作,非常感谢,这对未来的查询会非常有帮助。再次感谢! – Shikoki

-1

尝试这样的:

SELECT 
    * 
FROM 
    (SELECT * FROM table WHERE <order by something> LIMIT 0,5) 
ORDER BY 
    RAND() 
LIMIT 0,1 
+0

我只是给一个去,而我得到了这个错误#1248 - 每一个派生表必须有自己的别名,这里是我的代码 SELECT * FROM(SELECT * FROM tvmanager ORDER BY views DESC LIMIT 5)ORDER BY RAND()LIMIT 1 – Shikoki

+0

您必须使用别名进行内部查询..请看下面的答案 – Sahal

+0

在子查询后面使用'some sometable'。 – itachi

1
SELECT * FROM 
    ( SELECT * FROM table_name 
     WHERE name = 'aas' 
    ORDER BY views DESC LIMIT 5 
) 
ORDER BY RAND() LIMIT 1 
相关问题