我正在学习SQL,所以轻松点吧!
我有几张桌子。它们之间的公共列是“user_id”列。表1有一个“user_name”列。我想从表1中的这一列中获得所有用户名,其中域名匹配并使用(‘user_IDs \’,'user_name')更新表2中名为'domain_info‘的列。
‘'domain name\’将是文本字符串,'user_name‘将来自表1
所有的帮助都是非常感谢的干杯
发布于 2017-03-25 00:41:30
您可能不应该对该列执行 update操作,因为这样一来,每次user_name在user表上发生变化时,您就必须使它保持更新。这是Database normalization关于依赖性和冗余性的重要概念之一。相反,应该坚持使用表的关系从表中查询所需的数据。
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语法为:
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()中,如下所示:
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发布于 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。但是它起作用了!
再次感谢
https://stackoverflow.com/questions/43004692
复制相似问题