1

Table_A数値の範囲とそれに対応する値をリストする MySQL テーブルがあります。

beg_number
end_number
value

Table_Bすべての数値と対応する値の完全なリストである 2 つのフィールドを持つ新しいテーブルを作成するスクリプトが必要です。

数値

最終値を請求する

 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 に答える