次のコードで JOIN と WHERE の両方が内部結合を記述している場合、サブクエリの WHERE 句は目的の行を選択的に更新することで実際に意図したとおりに機能しますが、サブクエリの JOIN 句はすべての行を同じ値で更新します。
UPDATE #TEMP_ST
SET Absence = 1
where exists (SELECT * FROM sd.studentlist sl join
#TEMP_ST st ON st.id = sl.studentid and
st.fiscalyear = sl.fiscalyear and
st.schoolid = sl.schoolid and
sl.absence = 1)
UPDATE #TEMP_ST
SET Absence = 1
where exists (SELECT * FROM sd.studentlist sl
where #TEMP_ST.id = sl.studentid and
#TEMP_ST.fiscalyear = sl.fiscalyear and
#TEMP_ST.schoolid = sl.schoolid and
sl.absence = 1)