Mysql
 sql >> Database >  >> RDS >> Mysql

Sequenza numerica in MySQL

Dal momento che non esiste xrange, è possibile utilizzare una tabella separata memorizzata con intero (come risposto in precedenza), o semplicemente creare una procedura memorizzata per eseguire il lavoro:

DROP PROCEDURE IF EXISTS xrange;
DELIMITER //
CREATE PROCEDURE xrange(x INT, y INT)
BEGIN
  DECLARE i INT DEFAULT x;
  CREATE TEMPORARY TABLE xrange_tmp (c1 INT);
  WHILE i < y DO
    INSERT INTO xrange_tmp VALUES (i);
    SET i = i + 1;
  END WHILE;
END;
//

Utilizzo:

CALL xrange(-2,10);
SELECT c1 FROM xrange_tmp;
DROP TABLE xrange_tmp;

Quanto sopra sarà ovviamente più lento rispetto alla creazione di una tabella pronta con numeri interi. È più flessibile però.