MySQL で FizzBuzz

そろそろネタ切れの予感。
seq はなんとかならんものかな。

CREATE TEMPORARY TABLE seq (
    i INT AUTO_INCREMENT PRIMARY KEY
);

INSERT INTO seq VALUES
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), ();

SELECT CASE mod3 * 2 + mod5
    WHEN 3 THEN "FizzBuzz"
    WHEN 2 THEN "Fizz"
    WHEN 1 THEN "Buzz"
    ELSE CONCAT(i)
    END AS fizzbuzz
  FROM (SELECT i, i % 3 = 0 AS mod3, i % 5 = 0 AS mod5 FROM seq) AS t;

ついでだからもう一ひねり。

CREATE TEMPORARY TABLE seq (
    i INT AUTO_INCREMENT PRIMARY KEY
);

INSERT INTO seq VALUES
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), (),
(), (), (), (), (), (), (), (), (), ();

CREATE TEMPORARY TABLE fizzbuzz (
    val INT PRIMARY KEY,
    output VARCHAR(8) NOT NULL
);
INSERT INTO fizzbuzz (val, output) VALUES
  (1, "Fizz"),
  (2, "Buzz"),
  (3, "FizzBuzz");

SELECT IFNULL(output, CONCAT(i)) AS str
  FROM (SELECT i, (i % 5 = 0) * 2 + (i % 3 = 0) as val FROM seq) AS t
       LEFT OUTER JOIN fizzbuzz USING (val);