0

我有一张有 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插入的行

提前致谢,

4

3 回答 3

1

您可以从 select 语句中应用 insert into VALUES 是硬编码的答案... insert into from select 是基于查询的插入。在下面的示例中,我使用@MySQL 变量创建一个变量“@num”并从 99 开始。然后您只需按照它描述的示例替换...任何至少具有记录数的表你想添加。所以,就我而言,我只关心至少有 10 条记录的任何表。如果你想添加 1000 条记录,并且有一张至少有这么多记录的表,请使用它。LIMIT 显然限制了您从中返回的记录数。由于您并没有真正使用表中的任何列,因此该表是什么并不重要。因此,现在@num := @num +1 将随着每条处理的记录而不断增加,因此对于“c1”列将变为 100、101、102 等,

INSERT INTO Table
 (C1, C2)
select
      @num := @num +1 as c1,
      'X' as c2
   from
      AnyTableThatHasAtLeastNumberOfRecordsYouWant,
      ( select @num := 99 ) sqlvars
   limit
      10
于 2012-11-17T07:47:17.483 回答
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”作为值。

于 2012-11-17T05:46:59.837 回答
1

有一种方法或另一种方法,但并不是非常有利。如果您要做的是只写一次常量值,我会尽量保持简单并继续

SET @X := 'X'

或者

SELECT @X := expression FROM ...

其次是

INSERT INTO Table
(C1, C2)
VALUES
(100, @X), (102, @X), ...;
于 2012-11-17T06:44:44.823 回答