0

次の表を考慮してください。

Users
----------------------
Id  | 1   | 2
Name| John| Jack

Cars
----------------------
Id  | 14      | 26
Name| Mercedes| BMW

Import
-----------------------
Id         | 12   | 34
UserName   | John | Daniel
UserId     | NULL | NULL
CarName    | BMW  | Mercedes
CarId      | NULL | NULL
SomeOtherId| 45   | 45

私は基本的に他のテーブルで UserId と CarId を見つけたい. それらが見つからない場合は NULL のままです.

私は何かを試しました

UPDATE Import i
SET UserId = ( SELECT Id FROM Users WHERE Name=i.UserName ),
    CarId = ( SELECT Id FROM Cars WHERE Name= i.CarName )
WHERE SomeOtherId=45;

この場合、私は間違った構文を取得しています。どうすれば修正できますか?この場合、MERGE を使用する方法はありますか? (2 つ以上のテーブルをマージし、WHERE 句を使用する)? ありがとう。

4

2 に答える 2

2

from更新自体で句を使用できます。

UPDATE i
   SET UserId = Users.Id,
       CarId = Cars.Id
  FROM Import i
  LEFT JOIN Users
    ON i.UserName = Users.Name
  LEFT JOIN Cars
    ON i.CarName = Cars.Name
 WHERE i.SomeOtherId=45;
于 2012-09-17T12:51:22.740 に答える
0

以下があなたの問題を解決することを願っています

UPDATE I
SET UserId = U.Id
FROM IMPORT I
INNER JOIN Users U
  ON I.UserName = U.Name
WHERE UserId is Null


UPDATE I
SET CarId = C.Id
FROM IMPORT I
INNER JOIN Cars C
  ON I.CarName    = C.Name
WHERE CarId is Null
于 2012-09-17T12:58:11.617 に答える