我们知道可以使用以下查询一次插入多条记录:
INSERT INTO `TABLE1` (`First`,`Last`) VALUES ('name1','surname1'),
('name2','surname2'),
('name3','surname3'),
('name4','surname4');
但是如果我们想添加 1000 条类似上述的记录 (name*,surname*),我们是否必须写下所有记录,或者我们可以使用通配符之类的东西?或者是否有使用 mysql 的其他解决方案?
答案1
使用此脚本:
set @a=0;
INSERT INTO `TABLE1` (`First`,`Last`) SELECT
CONCAT('Name',(@a:=@a+1)),CONCAT('Surname',@a)
FROM `information_schema`.`SESSION_VARIABLES` LIMIT 1000;
,其中information_schema.SESSION_VARIABLES
是任何至少有 1000 行的大表。
答案2
CREATE VIEW binary_view AS SELECT 0 n UNION SELECT 1;
SELECT CONCAT('name',s),CONCAT('surname',s) FROM (
SELECT
b0.n * POW(2,0) +
b1.n * POW(2,1) +
b2.n * POW(2,2) +
b3.n * POW(2,3) +
b4.n * POW(2,4) +
b5.n * POW(2,5) +
b6.n * POW(2,6) +
b7.n * POW(2,7) +
b8.n * POW(2,8) +
b9.n * POW(2,9) s
FROM
binary_view b0,
binary_view b1,
binary_view b2,
binary_view b3,
binary_view b4,
binary_view b5,
binary_view b6,
binary_view b7,
binary_view b8,
binary_view b9
HAVING s BETWEEN 1 AND 1000 ) t;