2017-05-12 19 views
-1

基準に合致する新しいテーブルにsql行を挿入する方法はありますが、id値はリセットされます。つまり、行をコピーしますが、id値をリセットします。IDに空の値を持つSQL挿入

これは私が(0)ヌルとVALUE = IDを設定しようとしたが、両方が動作しません。私の現在のSQL

INSERT INTO followers_lost SELECT * FROM followers WHERE pk = $pk 

です。

+0

IDによって、あなたは、ID列を意味していますか?新しいID値を持つ新しい行が必要ですか?あなたはテーブルのスキーマを提供できますか? – JBdev

+0

@JBdev IDエントリをコピーせずにあるテーブルから別のテーブルに行を移動しようとしています。はい、ID列です – Daniil

答えて

1

あなたが身元を除くすべての列をしたいので、しなければならないすべては、インサート上のすべての非ID列を指定します:

INSERT INTO [followers_lost] ([Column1],[column2]...{but not the identity 
column}) 
SELECT [Column1],[column2]...{but not the identity column} FROM followers WHERE 
pk = $pk 
+0

素晴らしい、これは働いた! – Daniil

0

あなたが列を作成し、それを更新することができます:あなたのコメントに基づいて

SET @new_id=0; 
UPDATE your_table 
SET id = @new_id := @new_id + 1 
where id = 0 
0

OK、私はあなたがPKを除くすべてまたはフォロワーからの一部のフィールドを取り、どこFollowers_Lostに入れしようとしていると思います彼らは特定のPKに等しい。複数のPKを必要とする場合は、where節をequalの代わりにIN文に変更し、それに応じて値を調整する必要があります。

CREATE TABLE dbo.UAT_Followers_Lost (PK INT IDENTITY(1,1),DATA VARCHAR(50)) 
CREATE TABLE dbo.UAT_Followers (PK INT IDENTITY(1,1),DATA VARCHAR(50)) 

INSERT INTO dbo.UAT_Followers 
(DATA) 
SELECT 'Jan' 
UNION ALL 
SELECT 'Feb' 
UNION ALL 
SELECT 'Mar' 

DECLARE @PK INT 
SET @PK = 1 


INSERT INTO dbo.UAT_Followers_Lost 
(Data) 
SELECT Data 
FROM dbo.UAT_Followers 
WHERE PK = @PK 
+0

IDエントリをコピーせずにあるテーブルから別のテーブルに行を移動しようとしています。 – Daniil

+0

あなたがしようとしていることの鍵は、テーブルに挿入したいすべてのフィールドを修飾し、フィールドにデータを置いているselect文の同じフィールドを修飾する必要があるということです。 –

+0

これはあなたの質問を解決しましたか? –

関連する問題