更新表查询

时间:2015-01-19 04:37:58

标签: sql sql-server sql-server-2008

我经常在我的公司看到查询或SP有这些DML声明。

update #tablename
set Balance = 1
From #tablename

(或)

update #tablename
set Balance =1
From #tablename tn
INNER JOIN 
(Select distinct employeeID from myEmployee) Emp
ON tn.EmpID = Emp.EmpID

我的问题:

  1. 我不明白为什么我们在第一个查询中需要From #tablename。因为我通常只在该查询中写出前两行。

  2. 他们在第二个查询中做了什么?可以用另一种或更易读的方式完成吗?

2 个答案:

答案 0 :(得分:0)

在第一个查询中,不需要from子句。

第二个查询可能没有做出作者的意图。这个查询:

update #tablename
    set Balance =1
    From #tablename tn INNER JOIN 
         (Select distinct employeeID from myEmployee) Emp
         ON tn.EmpID = Emp.EmpID;

将更新#tablename中的每一行。意图可能是:

update tn
    set Balance = 1
    From #tablename tn INNER JOIN 
         (Select distinct employeeID from myEmployee) Emp
         ON tn.EmpID = Emp.EmpID;

答案 1 :(得分:0)

如果要直接为表中的更新分配值(即:设置a = 1)。 然后就不需要从表格和条件

写入

如果要使用其他表的值更新表,请使用第二个查询