在SQL中foreach的可能性?

时间:2014-02-03 16:39:41

标签: sql sql-server foreach

我目前在SQL中遇到问题。

我有两张桌子。第一个包含一个int值和一个帐户的int ID,第二个包含一些userdata和值,我想更新。

  1. 表:

    TABLE (INT AccountID, INT ValueToAdd)
    
  2. 表:

    TABLE (INT AccountID, INT ValueToBeUpdated, ...)
    
  3. 我希望SQL查看1.表中需要AccountID的表格,然后应该更新ValueToBeUpdated

    所需的1.table.AccountID = 2.table.AccountID

    我希望你明白我的意思。我还没有找到一种方法来实现像SQL这样的面向集合的语言,因为我不能通过其中一个表来循环循环:

    foreach (row in 2.table)
    {
      if (row.AccountID IN 1.table.AccountID)
      {
         UPDATE row SET ValueToBeUpdated = (SELECT ValueToAdd FROM 1.table WHERE AccountID = row.AccountID)
      }
    }
    

    我希望你能帮帮我:)。

2 个答案:

答案 0 :(得分:4)

忘记循环,你可以为你的情况做这样的事情:

UPDATE
    row
SET
    r.ValueToBeUpdated.col1 = t.ValueToAdd
FROM
    row r
INNER JOIN
    table t
ON
    t.AccountID = r.AccountID

<强>参考

Why are relational set-based queries better than cursors?

Understanding “Set based” and “Procedural” approaches in SQL

答案 1 :(得分:0)

不使用foreach循环就可以轻松执行。

UPDATE table2 SET ValueToBeUpdated = a.ValueToAdd
FROM table2 b INNER JOIN table1 a 
ON a.AccountID = b.AccountID