1

我有一个 MySQL 表Table_A,其中列出了数字范围及其对应的值:

beg_number
end_number
value

并且需要一个脚本来创建一个Table_B包含两个字段的新表,该字段是所有数字及其对应值的详尽列表:

数值

求终值

 1 6 11
 7 9 13
 11 14 6
 15 19 3

数值
 1 11
 2 11
 3 11
 4 11
 5 11
 6 11
 7 13
 8 13
 9 13
 11 6
 12 6
 13 6
 14 6
 15 3
 16 3
 17 3
 18 3

这只能通过 MySQL 脚本来完成吗?

4

1 回答 1

2

试试这个 Store 过程:

CREATE PROCEDURE dorepeat()
BEGIN
  DECLARE xbeg INT;
  DECLARE xend INT;
  DECLARE xvalue INT;
  DECLARE done TINYINT DEFAULT 0;
  DECLARE cur1 CURSOR FOR SELECT beg, end, value FROM TableA;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur1;
  read_loop: LOOP
    FETCH FROM cur1 INTO xbeg, xend, xvalue;
    IF done THEN LEAVE read_loop; END IF;
    SET @x = xbeg;    

    REPEAT INSERT INTO TableB VALUES (@x, xvalue); SET @x = @x + 1; UNTIL @x > xend END REPEAT;
  END LOOP;
  CLOSE cur1;
END

在这里你可以找到我的 sqlfiddle;

于 2013-02-01T21:29:07.133 回答