2017-07-19 55 views
0

我從來沒有問過這裏的問題,而且我不是非常先進的SQL,除了簡單的查詢之外,所以我很抱歉如果我聽起來無能爲力,與我習慣的編程非常不同。但是今天我陷入了一個獨特的位置,試圖解決一個沒有任何幫助的問題,所以我希望在這裏或知識上得到一些想法。SQL,從一個表中選擇,更改一個字段,更新第二個表中的字段

我有表A和表B.他們有各種不同的列,除了他們有共同的兩個,ID和電話號碼。有時,表B中的幾行將在電話號碼中有NULL。我需要寫一些將通過ID和電話號碼選擇來自表A的所有記錄,在表B中查找相同的ID,並且如果B的電話號碼字段爲NULL,則它將使用來自A的電話號碼來更新它。

我真的希望這是有道理的。我已經開始編寫一個循環來嘗試通過迭代來完成這個循環,因爲我可能會使用其他編程,但是在任何地方,我都會讀取所說的SQL,因此無法執行循環,因此請遠離。我很感激任何意見。

泰勒

+1

歡迎!你使用的是什麼RDBMS?你試過什麼了? –

+0

我相信你正在尋找這樣的答案https://stackoverflow.com/a/2334741/6242681 – Mike

回答

0

首先通過創建Select語句得到您想要的結果。

Select A.ID as AID, B.ID as BID, A.Phone as APhone, B.Phone as BPhone 
From TableA A 
JOIN TableB B on A.ID = B.ID 
Where B.Phone is Null 

然後,您可以非常容易地將它組成你的Update聲明。

Update B 
Set Phone = A.Phone 
From TableA A 
    JOIN TableB B on A.ID = B.ID 
    Where B.Phone is Null 
+0

這應該爲你工作@TaylorMeow,此外,你可以添加isnull函數,如果B.Phone有時是空的,其他時間空值。 isnull(B.Phone,'')='' – PawelCz

+1

OMG!這樣可行!我仍在形成更新部分,但我的結果正是我需要的正確字段的記錄!啊,我很放心,我的一天可能不會那麼糟糕。我無法感謝你的幫助。我認爲我在那裏發表評論的地方有很多地方可以添加一個......但是,這一點已經解決了,我很高興作爲一個蛤蜊​​。 – TaylorMeow

+0

很高興爲你工作@TaylorMeow。請接受這個答案。謝謝! –

0

我就檢查了這一點:Updating denormalized database tables

您可以消除「正常化」的表這個問題,並擺脫冗餘數據集。但是,在某些情況下,非規範化數據可能比規範化數據更有效。

相關問題