2016-02-03 56 views
0

我的代碼是:「無效列名」誤差插入 - 選擇與WHERE NOT EXISTS

INSERT INTO table_1 
SELECT * 
FROM table_2 S 
WHERE NOT EXISTS (SELECT column1 
        FROM table_1 T 
        WHERE T.column1 = S.column1) 

當我運行該腳本,我得到得到

無效的列名COLUMN1

在第一行,即使列確實存在於每個表。

我試圖從另一個表中插入他們有不同column1值(column1是主鍵)。有沒有不同的方式來做到這一點?

+2

'select'是否在沒有'insert'的情況下工作? –

+0

你能創建一個可重複的示例腳本嗎?我們不得不承認,兩個表中的列匹配。 –

+0

sheesh Tim,已經第一次了。 :) –

回答

1

首先,您在語句中使用了兩個SQL反模式。修復它們,你的錯誤可能會清除。

首先,不要使用插入而不指定要插入的列。如果人們稍後切換表格中的列,可能會遇到一些難以追查的錯誤。

其次,沒有任何藉口在生產代碼中使用Select *,尤其是在插入中。如果有人添加了列或從此表中刪除了列,那麼您的代碼將會中斷。

問題的一部分可能與表之間的列不匹配有關,或者您有一列是無法插入的標識。

+0

我試着明確地列入列,但每列都有相同的錯誤。什麼身份不能被插入? – kips

+0

標識列是自動生成的值,這是它們無法插入的原因。他們通常是id列和PK。請發佈您現在使用的確切語句以及您的問題中從SQL Server收到的確切錯誤。沒有看到這些東西很難幫助你。 – HLGEM