我需要从one table更新another table列值。我有两个表,即Users, UserProfile,两个表中都有MobileNumber列。因此,我想更新Users表移动电话号码从UserProfile。UserProfile表中可能有重复的mobilenumber。因此,我希望避免Users表中的重复值。如果已经存在MobileNumber,那么就不需要更新。
这是我的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表中,有一些记录在MobileNumber中包含Null值。如何在没有重复项的情况下更新此列?
发布于 2016-05-15 06:11:24
我终于找到了解决办法
Update u set u.MobileNumber = up.MobileNumber
FROM Users u
JOIN(
SELECT MobileNumber, MIn(UserId) AS UsID FROm UserProfile
group by MobileNumber
) up
on u.UserID = up.UsID发布于 2016-05-14 12:36:04
合并将帮助您:
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超过1userid,则必须将SELECT DISTINCT UserID, MobileNumber FROM UserProfile WHERE MobileNumber IS NOT NULL部件更改为类似SELECT DISTINCT UserID, MAX(MobileNumber) FROM UserProfile WHERE MobileNumber IS NOT NULL GROUP BY UserID的内容,或者编写自己的查询来选择所需的内容。
https://stackoverflow.com/questions/37224758
复制相似问题