sql >> Databasteknik >  >> RDS >> Mysql

Hämtar RAND()-rader utan ORDER BY RAND() i bara en fråga

Finns det en anledning till att en lagrad procedur inte kan användas för att skapa ett förberett uttalande?

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 ;


  1. Databastips för nybörjare

  2. Så här ändrar du tabellvärdesparametern

  3. Serverns tidszonsvärde 'CEST' är okänt

  4. Hur man lägger till administratörsservern i R12.2