Тъй като няма такова нещо като xrange, може да се използва отделна таблица, съхранена с цяло число (както беше отговорено по-рано), или просто да се направи съхранена процедура, за да се свърши работата:
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;
//
Употреба:
CALL xrange(-2,10);
SELECT c1 FROM xrange_tmp;
DROP TABLE xrange_tmp;
Горното очевидно ще бъде по-бавно от създаването на готова таблица с цели числа. Въпреки това е по-гъвкав.