2017-07-19 21 views
0

これまでに質問したことは一度もありません。単純なクエリを超えてSQLをあまり進歩させていないので、私が慣れていたプログラミングとはまったく異なっています。しかし、今日私は、援助なしで問題を解決しようとする独特の立場に立ち往生しているので、ここで知識を得ることを望んでいます。SQLを1つのテーブルから選択してフィールドを変更し、2番目のテーブルのフィールドを更新

私は表Aと表Bを持っています。彼らは共通の2つのIDと電話番号を除き、さまざまな異なる列を持っています。場合によっては、表Bのいくつかの行に電話番号にNULLが含まれることがあります。テーブルAのすべてのレコードをIDと電話番号で選択し、テーブル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、さらにB.Phoneが時々空である場合isnull関数を追加することができますヌル。どこisnull(B.Phone、 '')= '' – PawelCz

+1

OMG!それは動作します!私はまだ更新部分を形成していますが、私の結果はちょうど私が正しいフィールドで必要としたレコードでした!ああ、私はとても安心しています。私は助けのために十分にあなたに感謝することはできません。私は、私がここに私のコメントをする場所には、1つを追加する場所がたくさんあったと思う...しかし、はいこれが解決され、私は貝として幸せです。 – TaylorMeow

+0

これはあなたのために働いてうれしい@TaylorMeow。あなたの答えとしてこれを受け入れてください。ありがとうございました! –

0

私はこれをチェックアウトします:Updating denormalized database tables

あなたは、「正規化」の表によって、この問題を解消することができ、データの冗長セットを取り除きます。ただし、特定の状況では、正規化されていないデータは正規化されたデータより効率的です。

関連する問題