sql >> Databasteknik >  >> RDS >> Mysql

Nummersekvens i MySQL

Eftersom det inte finns något sådant som xrange, kan man använda en separat tabell lagrad med heltal (som tidigare svarat), eller bara göra en lagrad procedur för att göra jobbet:

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;
//

Användning:

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

Ovanstående kommer uppenbarligen att gå långsammare än att skapa en färdig tabell med heltal. Det är dock mer flexibelt.



  1. Hur loggar man PostgreSQL-frågor?

  2. Vilken SQL-fråga tar längre tid? (MYSQL)

  3. Be om åsikter:En sekvens för alla tabeller

  4. MySQL användarrättigheter på delade servrar