2012-10-18 1 views
0

Juste une petite question, c'est une chose simple à faire via PHP mais je suis sûr qu'il doit y avoir un moyen de le faire via MySQL.Comment passer la valeur d'une requête dans une autre requête MySQL sans utiliser PHP

J'ai une table avec les colonnes id, element_id, video_link, views parmi quelques autres. Ce que je veux faire, c'est sélectionner une des 5 vidéos les plus regardées au hasard.

par exemple

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

Il est très simple de le faire via PHP et je vais utiliser que s'il n'y a pas moyen de le faire via MySQL, mais il serait bon de savoir!

Répondre

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

Super! Cela a fait le travail, merci beaucoup, cela va être très utile pour les futures requêtes. Merci encore! – Shikoki

-1

Essayez comme ceci:

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

je viens de donner qu'un coup, et on m'a donné cette erreur # 1248 - Chaque table dérivée doit avoir son propre alias, voici mon code SELECT * FROM (SELECT * FROM tvmanager ORDER BY vues DESC LIMIT 5) ORDER BY RAND() LIMIT 1 – Shikoki

+0

Vous devez utiliser l'alias pour la requête interne. Regardez la réponse ci-dessous – Sahal

+0

utilisez 'AS sometable' après la sous-requête. – itachi

1
SELECT * FROM 
    ( SELECT * FROM table_name 
     WHERE name = 'aas' 
    ORDER BY views DESC LIMIT 5 
) 
ORDER BY RAND() LIMIT 1 
Questions connexes