Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage mit Unterabfragebedingung RAND()

Versuche dies. Das Verschieben der Unterabfrage zum JOIN scheint das Problem zu beheben. Ich denke, das Problem hat mit der Unterabfrage in der WHERE-Klausel zu tun. Ich denke, dass in der WHERE-Klausel die Unterabfrage und die RAND-Funktion für jeden Datensatz ausgeführt werden. Dies ist wahrscheinlich der Grund, warum die Ergebnisse unterschiedlich sind.

SELECT  a.AlbumID,
        Videos_Demo.VideoID,
        VideosInAlbums_Demo.AlbumID

FROM    VideosInAlbums_Demo

        LEFT JOIN Videos_Demo
        ON Videos_Demo.VideoID = VideosInAlbums_Demo.VideoID

        JOIN 
        (
            SELECT  AlbumID
            FROM    VideosInAlbums_Demo
            WHERE   VideoID = '1'
            ORDER BY RAND()
            LIMIT 1
        ) AS a ON VideosInAlbums_Demo.AlbumID = a.AlbumID