Mysql
 sql >> Base de données >  >> RDS >> Mysql

Récupération des lignes RAND() sans ORDER BY RAND() en une seule requête

Existe-t-il une raison pour laquelle une procédure stockée ne peut pas être utilisée pour créer une instruction préparée ?

DELIMITER //
DROP PROCEDURE IF EXISTS rand_quote//
CREATE PROCEDURE rand_quote()
BEGIN
    SET @rand := ROUND((SELECT COUNT(*) FROM quotes) * RAND());
    SET @sql := CONCAT('SELECT * FROM quotes LIMIT ', @rand, ', 1');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END;
//
DELIMITER ;