首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server查询将一个表列值更新为另一个表值

Server查询将一个表列值更新为另一个表值
EN

Stack Overflow用户
提问于 2016-05-14 09:04:23
回答 2查看 760关注 0票数 1

我需要从one table更新another table列值。我有两个表,即Users, UserProfile,两个表中都有MobileNumber列。因此,我想更新Users表移动电话号码从UserProfileUserProfile表中可能有重复的mobilenumber。因此,我希望避免Users表中的重复值。如果已经存在MobileNumber,那么就不需要更新。

这是我的query

代码语言:javascript
复制
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值。如何在没有重复项的情况下更新此列?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-15 06:11:24

我终于找到了解决办法

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2016-05-14 12:36:04

合并将帮助您:

代码语言:javascript
复制
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的内容,或者编写自己的查询来选择所需的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37224758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档