首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接或连接

连接或连接
EN

Stack Overflow用户
提问于 2017-03-25 00:32:58
回答 2查看 33关注 0票数 0

我正在学习SQL,所以轻松点吧!

我有几张桌子。它们之间的公共列是“user_id”列。表1有一个“user_name”列。我想从表1中的这一列中获得所有用户名,其中域名匹配并使用(‘user_IDs \’,'user_name')更新表2中名为'domain_info‘的列。

‘'domain name\’将是文本字符串,'user_name‘将来自表1

所有的帮助都是非常感谢的干杯

EN

回答 2

Stack Overflow用户

发布于 2017-03-25 00:41:30

您可能不应该对该列执行 update操作,因为这样一来,每次user_nameuser表上发生变化时,您就必须使它保持更新。这是Database normalization关于依赖性和冗余性的重要概念之一。相反,应该坚持使用表的关系从表中查询所需的数据。

代码语言:javascript
复制
select u.user_name, domain_info = d.domain_info+'\'+u.user_name
from table_1 u
  inner join table_2 d
    on u.user_id = d.user_id

update语法为:

代码语言:javascript
复制
update d
  set domain_info = d.domain_info+'\'+u.user_name
from table_1 u
  inner join table_2 d
    on u.user_id = d.user_id

如果两者都可以为空,则可以将它们包装在isnull()coalesce()中,如下所示:

代码语言:javascript
复制
update d
  set domain_info = isnull(d.domain_info,'')+isnull('\'+u.user_name,'')
from table_1 u
  inner join table_2 d
    on u.user_id = d.user_id
票数 0
EN

Stack Overflow用户

发布于 2017-03-28 23:07:27

谢谢SqlZim..。

我让它像这样工作:

UPDATE table2 SET table2.domain_info = user_name FROM table1 WHERE table1.user_id = table2.user_id;

更新域名集合table2.domain_info = (SELECT {fn table2 (‘domainname\’,domain_info)}) WHERE user_id = user_id;

我几乎可以肯定有更好的语法来实现这一点……我根本没有写太多TSQL。但是它起作用了!

再次感谢

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

https://stackoverflow.com/questions/43004692

复制
相关文章

相似问题

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