sql >> Base de Datos >  >> RDS >> Mysql

Obtener filas RAND() sin ORDER BY RAND() en una sola consulta

¿Hay algún motivo por el que no se pueda usar un procedimiento almacenado para crear una declaración preparada?

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 ;