【问题标题】:Updating Table with Joining使用联接更新表
【发布时间】:2016-09-07 07:46:10
【问题描述】:

在我的场景中,我有两个临时表:

表 1

  id | UserName | CalendarDate
 ----+----------+--------------
   1 | Null     | 2016-09-07 
   2 | Null     | 2016-09-07

表2

id | Emp_Name  | Date
---+-----------+-------------
 1 | Max       | 2016-09-07
 2 | Jupiter   | 2016-09-07

这是我用来连接两个表的查询。

update #TABLE1 
set UserName = e.Emp_Name 
from #TABLE2 e 
join #TABLE l on e.Date = l.CalendarDate

运行查询后,它会在所有这样的行中使用相同的Emp_Name 更新#Table1

id | UserName | CalendarDate
---+----------+----------------
 1 | Jupiter  | 2016-09-07
 2 | Jupiter  | 2016-09-07

我希望我的输出是这样的

表1

id | UserName | CalendarDate
---+----------+----------------
 1 | Max      | 2016-09-07
 2 | Jupiter  | 2016-09-07

如果有人可以帮助我,那将非常有帮助。谢谢

【问题讨论】:

  • 由于您的#Table1 的两行具有相同的日期,更新语句将首先将这两行更新为Max,然后将这两行更新为Jupiter。 ....您需要的是这些表上的 正确的 PRIMARY KEY,这样您就不必依赖像 Date 这样的列,这显然不是每一行都唯一的

标签: sql sql-server database join


【解决方案1】:

您需要稍微更改一下您的 UPDATE 语句:

update l --Instead of #TABLE1
set UserName = e.Emp_Name 
from #TABLE2 e 
join #TABLE1 l 
    on e.id= l.id -- use ID instead of dates

【讨论】:

  • 感谢 gofr1 但此查询也不起作用,它显示相同的结果
  • 我明白了,你加入的日期可能是相同的,你应该使用 ID
  • 固定答案,请试一试。
  • 谢谢 gofr1 我把它改成了 id。现在它运行良好。再次感谢
猜你喜欢
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多