1

INSERT INTO SELECT選択の結果に基づいてレコードを新しいテーブルに挿入するクエリが機能しています。単純。

INSERT INTO my_table (a, b, c)
SELECT a, b, c FROM my_table 
WHERE x=y;

INSERTこのクエリの一部から新しく作成された主キーIDを取得して、それらを使用して別のテーブルを更新できるようにするにはどうすればよいですか?(主キーは唯一の一意の参照です)

INSERT INTO SELECTクエリごとに1つのテーブルへの挿入のみをサポートしていることを読んだので、それは問題外です。これはどのように達成できますか(MyISAMエンジンを使用)?

4

1 に答える 1

0

一時テーブルでデータを選択し、その上でカーソルを実行して、行を挿入することができます。

     DECLARE @tempTable TABLE(
    a VARCHAR(MAX),
    b VARCHAR(MAX),
    c VARCHAR(MAX)
    )

    INSERT INTO @tempTable(a,b,c)
    SELECT a,b,c FROM my_table WHERE x=y

DECALRE @a DATATYPE;
Declare @b DATATYPE;
Declare @c DATATYPE;

DECLARE cursor CURSOR FOR
    SELECT * FROM @tempTable

OPEN cursor 

FETCH NEXT FROM PropertyCursor INTO @a, @b,@c
WHILE (@@FETCH_STATUS = 0)
BEGIN
 INSERT INTO my_table(a,b,c)
VALUES(@a,@b,@c)
DECALRE @PrimaryKey INT = SCOPE_IDENTITY();//THis line will give u the PK so u can work with it and then below move to next row
FETCH NEXT FROM cursor INTO @a, @b,@c
END

CLOSE cursor 
DEALLOCATE cursor 
于 2012-08-09T12:38:05.037 に答える