2017-05-12 35 views
-1

如何插入SQL行到一個新的表,其中符合標準,但重置id的值。換句話說,複製行,但重置id值。空值的SQL插入的ID

這是我當前的SQL

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

我試圖設置ID = NULL和值(0),但都不起作用。

+0

通過ID,你的意思是標識列?你想要一個具有新身份值的新行嗎?你能提供表格的模式嗎? – JBdev

+0

@JBdev我試圖從一個表列移至另一個而不復制ID條目。是的,它是標識列 – Daniil

回答

1

所有你需要做的,因爲你想要的所有列,除了身份是指定所有非標識列上插入:

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子句更改爲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

這是否解決了您的問題? –