Problemet er forårsaget af en ændring introduceret i MySQL 5.7 om, hvordan afledte tabeller i (under)forespørgsler behandles.
Grundlæggende, for at optimere ydeevnen, udføres nogle underforespørgsler på forskellige tidspunkter og/eller flere gange, hvilket fører til uventede resultater, når din underforespørgsel returnerer ikke-deterministiske resultater (som i mit tilfælde med RAND() ).
Der er to nemme (og ligeledes grimme) løsninger til at få MySQL til at "materialisere" (alias returnere deterministiske resultater) disse underforespørgsler:Brug LIMIT <high number> eller GROUP BY id som begge tvinger MySQL til at materialisere underforespørgslen og returnere de forventede resultater.
Den sidste mulighed er at slå derived_merge fra i optimizer_switch variabel:derived_merge=off (sørg for at lade alle de andre parametre være som de er).
Yderligere læsninger:
https://mysqlserverteam.com/derived -tabeller-i-mysql-5-7/
Subquerys rand()-kolonne revurderet for hver gentagen valg i MySQL 5.7/8.0 vs. MySQL 5.6