0

C1とC2という2列のテーブルがあります。常に列 2 が同じになる 10 行を挿入する必要があります。

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

方法はありますが、それほど有利ではありません。あなたがやろうとしているのが定数値を一度だけ書くことである場合、私はそれをシンプルに保ち、

SET @X := 'X'

また

SELECT @X := expression FROM ...

に続く

INSERT INTO Table
(C1, C2)
VALUES
(100, @X), (102, @X), ...;
于 2012-11-17T06:44:44.823 に答える
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

select ステートメントから挿入を適用できます。 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 に答える