1

私が作成した一時テーブルがあります:

CREATE TABLE #tempIDS (
Name varchar(108),
Id uniqueidentifier,
IsUser bit )

そして、私はそれを移入しました:

INSERT INTO #tempIDS (Name, Id)
SELECT UName, UId FROM UList
WHERE UName LIKE 'smi%'
ORDER BY UName

だから今私がしたいのは、一時テーブルのレコードを別のテーブルと照合して、それらが存在するかどうかを確認することです。それらが他のテーブルにある場合は「1」、そうでない場合は「0」を入力します。

そこに私の問題があります。

これを行う場合: select count(A.UId) from Staff A, #tempIDS B where A.UId = '480FA1E3-1A4B-4D3B-AB21-5070ADF974EB'

「1」または「0」を取得できます。

しかし、比較テーブルにレコードが存在するかどうかに基づいて、「1」または「0」を選択して一時テーブルに挿入するにはどうすればよいですか? これはうまくいきません:

update #tempIDS
set IsUser = (select COUNT(StaffId) FROM Staff
where StaffId= (select Id from #tempIDS))

ヘルプ?

4

2 に答える 2

2
 UPDATE #tempIDS
 SET IsUser= CASE WHEN COALESCE(staff.staffid,0) = 0  THEN 0 ELSE 1 END
 FROM #tempIDS
 LEFT OUTER JOIN staff ON #tempIDS.id = staff.staffid

申し訳ありませんが、IsUser を更新したいようです ID を更新していました

于 2012-05-11T17:14:15.473 に答える
0

デフォルトでIsUser列を0に設定すると、一致するスタッフIDが見つかった行のみを更新する必要があります。

于 2012-05-11T17:08:13.280 に答える