1

tblとのような列を持つテーブルがcol1ありますcol2
col2整数です(idフィールドではなく、intフィールドのみ)。このテーブルに4つの行を挿入する必要があります。これらの行は次のとおりです。

John 1
John 2
John 3
Sam  4

単一のクエリでそれを行うための最良の方法は何ですか?ありがとう!:)

更新:100個の値がある場合はどうなりますか?:)私が指摘しているのは、すべての値が同じで1からnになっているということですが、そのうちの1つは異なります。

4

3 に答える 3

2

INSERTこれは、次の1つのステートメントのみを使用して実行できます。

VALUES構文を使用するINSERTステートメントは、複数の行を挿入できます。これを行うには、列値の複数のリストを含めます。各リストは括弧で囲まれ、コンマで区切られています。

このような:

INSERT INTO tablename(col1, col2)
VALUES ('John', 1),
       ('John', 2),
       ('John', 3),
       ('Sam',  4);

または:

INSERT INTO Tablename(col1, col2)
SELECT 'John' AS col1, 1 AS col2
UNION ALL
SELECT 'John'        , 2
UNION ALL 
SELECT 'John'        , 3 
UNION ALL
SELECT 'Sam'         , 4 ;
于 2013-03-01T08:47:35.193 に答える
1
INSERT INTO table (col1, col2) VALUES
('John', 1),
('John', 2),
('John', 3),
('Sam', 4)
于 2013-03-01T08:48:04.500 に答える
1

大量のレコード (100 など) を挿入する必要がある場合は、ストアド プロシージャ内でループを使用できます。以下に基本的な例を示します。

DELIMITER $$
DROP PROCEDURE IF EXISTS LoopProc$$
CREATE PROCEDURE LoopProc()
  BEGIN
    DECLARE x  INT;
    SET x = 1;
    WHILE x  <= 100 DO
      INSERT INTO table (col1, col2) VALUES ('John', x);
      SET  x = x + 1;
    END WHILE;
    SET  x = x + 1;
    INSERT INTO table (col1, col2) VALUES ('Sam', x);
  END$$
DELIMITER ;
于 2013-03-01T09:09:39.373 に答える