Advertisement
Lauda

rand values procedure

Oct 11th, 2014
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 0.83 KB | None | 0 0
  1. -- Get N rand values and append some predefined row...
  2. -- Usage: CALL getRandRows(NUM_OF_RAND_ROWS, PREDEFINED_ID);
  3. -- DROP PROCEDURE IF EXISTS getRandRows;
  4. -- CREATE PROCEDURE getRandRows(IN retCount INT, IN predefinedID INT)
  5. BEGIN
  6.   DROP TEMPORARY TABLE IF EXISTS `tmp_randrows`;
  7.   CREATE TEMPORARY TABLE `tmp_randrows` (
  8.     `tmp_id` INT(6)
  9.   );
  10.  
  11. leWildLoop:
  12. LOOP
  13.     IF retCount < 1 THEN
  14.       LEAVE leWildLoop;
  15.     END IF;
  16.  
  17.     INSERT INTO `tmp_randrows`
  18.     SELECT rnd1.`id` FROM `quotes` AS rnd1 JOIN (SELECT (RAND() * (SELECT MAX(`id`) FROM `quotes`)) AS `id`) AS rnd2 WHERE rnd1.`id` >= rnd2.`id`
  19.     ORDER BY rnd1.`id` ASC LIMIT 1;
  20.  
  21.     SET retCount = retCount - 1;
  22.   END LOOP leWildLoop;
  23.     INSERT INTO `tmp_randrows` SELECT `id` FROM `quotes` WHERE `id` = predefinedID;
  24.  
  25. SELECT * FROM `tmp_randrows`;
  26. END
  27.  
  28. -- by lauda
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement