我正在学习SQL,所以很容易!
我有几张桌子。它们之间的共同列是' user_id'柱。表1中有一个' user_name'柱。我想获得表1中此列与user_ID匹配的所有用户名,并更新表2中名为' domain_info'的列。使用:('域名\',' user_name') '域名\'将是文本字符串和 ' USER_NAME'将来自表1
非常感谢所有帮助 干杯
答案 0 :(得分:0)
您可能不 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 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
答案 1 :(得分:0)
谢谢SqlZim ..
我让它像这样工作:
UPDATE 表2 组 table2.domain_info = user_name 从 表格1 哪里 table1.user_id = table2.user_id;
UPDATE 表2 组 table2.domain_info = (SELECT {fn CONCAT(&#39; domainname \&#39;,domain_info)}) 哪里 user_id = user_id;
我几乎可以肯定有一个更好的语法...我根本没有写过很多TSQL。但它奏效了!
再次感谢