2013-05-15 85 views
1

我有一張表,其中包含來自組織的電話列表。該表有2列表組織(ID)和電話的外鍵。如何從SQL Server中具有2個具有多個值的組合鍵的表中刪除多行?

電話

ID Telephone 
1 1234 
1 3456 
1 9999 
3 9999 

我想要刪除的拳頭行和第二行,這樣做的我的ID值1和含有該號碼刪除表(1234,3456)被稱爲@TempTels

我想到了這一點,但沒有奏效:

Delete From TelephonesOrg 
where ID = ID AND Telephone = (Select Telephone from @TempTels) 

預先感謝任何幫助。

回答

3

由於該子select返回多個值,則需要使用IN - 不是=等號:

Delete From TelephonesOrg 
where ID = 1 
    AND Telephone IN (Select Telephone from @TempTels) 
+0

只是試了一下,工作完美無瑕。謝謝!。我可以問你,IN聲明是如何工作的? –

+1

@DanteSnow:'IN'運算符檢查左邊的值('Telephone')是否在右邊的結果集中(您的子選擇)。如果是這樣 - 這是一個匹配,並且該行被處理。它像一個等號一樣工作 - 只針對整個**值的集合 - 而不僅僅是一個單一的值。 –

+1

再次感謝,聽起來像是一個真正有用的 –

0

@Dante雪從你的代碼中有具有ID = 1的3行..所以如果你想刪除第2行只有你必須使用像下面..

Delete From TelephonesOrg 
where ID = 1 AND Telephone in (1234, 3456) 
+0

這將工作,如果值靜態,但我正在寫一個存儲過程。謝謝你的時間。 –

相關問題