one table
のカラム値をanother table
から更新します。私は2つのテーブルすなわちUsers, UserProfile
を持っています。どちらのテーブルにもMobileNumber
というカラムがあります。そこでUsers
テーブルの携帯電話番号をUserProfile
から更新したいと思います。 UserProfile
テーブルにmobilenumberが重複している可能性があります。だから私はUsers
テーブルの重複値を避けたい。すでにMobileNumber
が存在する場合は、更新する必要はありません。テーブルの値を別のテーブル値で更新するSQL Serverクエリ
は、ここに私のquery
update Users
set MobileNumber = up.MobileNumber
from Users u
left join UserProfile up on u.UserID = up.UserID
where up.MobileNumber not in (select ISNULL(MobileNumber, '') from Users);
である。しかし、それが正しく機能していません。 UserProfile
テーブルには、Null
値を含むレコードがMobileNumber
にあります。重複することなくこの列を更新するにはどうすればよいですか?
MERGE Users as target
USING (
SELECT DISTINCT up.UserID, up.MobileNumber
FROM UserProfile up
WHERE up.MobileNumber NOT IN (SELECT MobileNumber FROM Users WHERE MobileNumber IS NOT NULL)) as source
ON target.UserID = source.UserID
WHEN MATCHED AND target.MobileNumber IS NULL THEN
UPDATE SET MobileNumber = source.MobileNumber;
しかし、あなたには、いくつかのuserid
のためにもっとして1 MobileNumber
を得た場合、あなたはそのSELECT DISTINCT UserID, MAX(MobileNumber) FROM UserProfile WHERE MobileNumber IS NOT NULL GROUP BY UserID
ような何かにSELECT DISTINCT UserID, MobileNumber FROM UserProfile WHERE MobileNumber IS NOT NULL
一部を変更したり、あなたが必要なものを選択したために、独自のクエリを記述する必要があります。
を得ました。あなたが直面している問題はどこですか@Ajay –
明確化してください。 Userには1レコードが、UserProfileには1ユーザーあたり多くのレコードがありますか? –
@ P.Salmon混乱して申し訳ありません。 userprofileテーブルでは、複数のユーザーに対してmobilenumberが同じである可能性があります。 UserProfileには、 'User.UserId = UserProfile.UserId'のような単一のレコードしかありません。レコードは1つしかありません。 –