hoge001さん、こんにちは。フォーラムオペレーターのHarukaです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
trapemiyaさんが提供したリンクによると、サブクエリで使用する列名の修飾を確認してください。
一般的な規則としては、ステートメント内の列名は、同じレベルの FROM 句で参照しているテーブルで暗黙的に修飾されます。
サブクエリの FROM 句で参照しているテーブルに列名が存在しない場合、外側のクエリの FROM 句で参照しているテーブルで暗黙的に修飾されます。
また、サブクエリで参照している列が、サブクエリの FROM 句で参照しているテーブルにない場合でも、外側のクエリの FROM 句で参照しているテーブルに存在すれば、エラーが発生することなくクエリが実行されます。
サブクエリで参照している列は、SQL Server により、外側のクエリのテーブル名で暗黙的に修飾されます。
したがって、ロジックが正しく、列の所有権についてあまり考えないように、クエリで明示的に指定された列を常に使用できます。
以下のスクリプトを参照してください。
SELECT *
FROM Tbl1
WHERE EXISTS
(SELECT * FROM Tbl2
WHERE Tbl2.Col1 = Tbl1.Col1 AND
EXISTS
(SELECT * FROM Tbl3
WHERE Tbl3.Col1 = Tbl2.Col1)
)
どうぞよろしくお願いします。
MSDN/ TechNet Community Support Haruka
~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~