URL: https://linuxfr.org/forums/programmation-sql/posts/rand-dans-un-subselect-comportement-etrange Title: RAND() dans un SubSelect : comportement étrange Authors: windu.2b Date: 2013年12月07日T16:32:21+01:00 License: CC By-SA Tags: mysql, mariadb, rand et subselect Score: 1 Bonjour, J'ai 2 tables (``galeries`` et ``peintures``) avec des champs tout ce qu'il y a de plus classiques (``id`` et ``nom`` pour l'une, ``id``, ``nom`` et ``id_galerie`` pour l'autre) et je cherche à récupérer la liste de mes galeries et, pour chacune d'elles, une des peintures qui lui sont rattachées, choisie aléatoirement. J'ai donc la requête suivante : ``` sql SELECT g.id AS id_galerie, g.nom AS nom_galerie, p.id AS id_peinture, p.nom AS nom_peinture FROM ( SELECT gal.id, gal.nom, ( SELECT pe.id FROM peintures pe WHERE pe.id_galerie = gal.id ORDER BY RAND() LIMIT 1 ) AS p_random FROM galeries gal ) g LEFT JOIN peintures p ON p.id = g.p_random ORDER BY nom_galerie ASC ``` Et là, c'est le drame ! Cette requête, exécutée sur une base MySQL 5.1.44 (serveur de prod) fonctionne bien, mais la même, exécutée sur une base MariaDB 5.5.34 (serveur perso) me renvoie des résultats totalement incohérents, avec des valeurs ``NULL`` pour ``id_peinture`` et donc ``nom_peinture`` ! Et, en rajoutant le champ ``p_random`` dans le ``SELECT`` final, quelle ne fut pas ma surprise de découvrir que sa valeur n'est pas identique à celle renvoyée par ``p.id``, malgré le ``LEFT JOIN`` ! Là, je vous avoue que je ne comprends plus rien. Fais-je quelque chose d'incorrect ou aurais-je levé un bug, selon vous ? Edit : suite à une installation de MySQL 5.6.15, en remplacement de MariaDB, tout fonctionne normalement. J'en déduis que le bug est du coté de MariaDB, et non de ma requête.

AltStyle によって変換されたページ (->オリジナル) /