加入或连接

时间:2017-03-24 16:32:58

标签: sql-server-2008

我正在学习SQL,所以很容易!

我有几张桌子。它们之间的共同列是' user_id'柱。表1中有一个' user_name'柱。我想获得表1中此列与user_ID匹配的所有用户名,并更新表2中名为' domain_info'的列。使用:('域名\',' user_name') '域名\'将是文本字符串和 ' USER_NAME'将来自表1

非常感谢所有帮助 干杯

2 个答案:

答案 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。但它奏效了!

再次感谢