在Mysql中插入,其中一列具有常量值

时间:2012-11-17 05:23:41

标签: mysql database

我有一个表有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

提前致谢,

3 个答案:

答案 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