2017-06-20 4 views
1

MS Accessテーブルから行を複製する際に問題があります。 This is a table I have。この表のMy(PK)は、BID、Order_nr、Parameter_ID、およびTimeStampです。SQL:行をコピーする方法とフィールド(PK)を変更する方法

これは私が今使っているクエリですが、うまくいきません。私はこれを達成することができますどのように12345にOrder_nrを設定しながら、すべてのそれらの行をコピーして、新しい行を作成したい

INSERT INTO Measurement_test (BID, Order_nr, Parameter_ID, Value, Machine_Serial_nr, TimeStamp, Passed) 
SELECT BID, '12345', Parameter_ID, Value, Machine_Serial_nr, TimeStamp, Passed 
FROM Measurement_test 
WHERE BID = 123; 

「構文エラー。INSERT INTO」と言いますか?

+0

ここでそのためのソリューション出回っあり:https://stackoverflow.com/questions/2783150/mysql-how-to-copy-rows-but-change-a-few-fields私のために働きます他のテーブルは、このためではありません。助けてください:) –

+0

また、 'Order_nr'がPKの場合、Uniqueでなければなりません。 select文が複数の行を返した場合(またはOrder_nr = 12345のレコードをすでに持っている場合)、失敗します。 – Derenir

+0

私のPKは4つのフィールドの組み合わせで構成されていますので、複製すると、作成された新しい行は新しいOrder_nrとして固有のものになります。そして、新しいOrder_nrは、クエリを実行する前にテーブルに存在しません。 –

答えて

0

あなたは、列名にいくつかのReserved Wordsを持っている:

Value, TimeStamp 

あなたは角括弧でそれらを囲む必要があります。

Order_nrが整数の場合は、値の前後に引用符を使用しないでください。

INSERT INTO Measurement_test (BID, Order_nr, Parameter_ID, [Value], Machine_Serial_nr, [TimeStamp], Passed) 
SELECT BID, 12345, Parameter_ID, [Value], Machine_Serial_nr, [TimeStamp], Passed 
FROM Measurement_test 
WHERE BID = 123; 
+0

ありがとうございますが、それはまだ動作しません。今、最初に私は(1)行数を追加しようとしているメッセージを取得し、はいをクリックした後、私は言う別のエラーメッセージが表示されます:MS Accessはタイプ変換エラーのためにNullフィールドを0に設定し、キーの違反、ロック違反による0、検証ルール違反による0レコード –

+0

私が理解しているように、主キーに何か問題があります –

+0

私のプライマリテーブルで間違いを見つけました。ありがとうございました!私はupvoteを与えるが、私は新しいユーザーであるため、誰もそれを見ることができない; / –

関連する問題