我有一个表有2列的表C1和C2。我需要插入10行,其中列2将始终相同。
INSERT INTO Table
(C1, C2)
VALUES
(100, 'X'),
(101, 'X'),
(102, 'X'),
(103, 'X'),
(104, 'X'),
(105, 'X'),
(106, 'X');
还有其他方式如下,
INSERT INTO Table
(C1)
VALUES
(100,102,103,104,105,106)
对于插入的行,和C2的值应为X
提前致谢,
答案 0 :(得分:1)
您必须创建一个表
CREATE TABLE `tblA` (
`C1` INT(10) NULL,
`C2` VARCHAR(50) NULL DEFAULT 'X'
);
然后,当您执行INSERT INTO Table (C1) VALUES (100,102,103,104,105,106);
时,列C2将“X”作为值。
答案 1 :(得分:1)
有一种方式,但不是非常有利。如果你要做的只是写一次常量值,我会尽量保持简单并且去
SET @X := 'X'
或
SELECT @X := expression FROM ...
接着是
INSERT INTO Table
(C1, C2)
VALUES
(100, @X), (102, @X), ...;
答案 2 :(得分:1)
您可以从select语句中应用插入VALUES是硬编码的答案...从select插入到基于查询的插入。在下面的示例中,我使用@MySQL变量创建变量“@num”并从99开始。然后您只需替换它描述的样本...任何至少具有记录数的表你想要添加。所以,就我而言,我只关心任何至少有10条记录的表格。如果你想要添加1000,并且拥有一个至少具有许多记录的表,请使用它。 LIMIT显然限制了从中返回的记录数。由于您没有真正使用表中的任何列,因此该表是什么并不重要。所以,现在@num:= @num +1将对每个处理的记录保持增加,因此对于“c1”列将变为100,101,102等,并且'X'将对于“c2”是恒定的专栏,你完成了。
INSERT INTO Table
(C1, C2)
select
@num := @num +1 as c1,
'X' as c2
from
AnyTableThatHasAtLeastNumberOfRecordsYouWant,
( select @num := 99 ) sqlvars
limit
10