次の表を検討してください。id 列の名前が異なることに注意してください。
CREATE TABLE A (id int)
CREATE TABLE B (bid int)
A には値が含まれます1 to 10
。B には値が含まれます1 to 5
。
ここで、ID を比較して、両方のテーブルに存在するすべての行を検索するクエリを作成しました。間違って、次のような間違ったクエリを書きました。
select id from A
where id in (select id from B)
B
の id 列に名前が付けられていることをどのように忘れたかを確認してくださいbid
私が理解できないのは、なぜこのクエリが実行され、 からすべての行が返されるのかということですA
。どちらかといえば、私はそれが戻ってくることを期待していました1 to 5
実行計画を見ても役に立ちません。下の画像で、テーブル B のテーブル スキャンが実際に 10 行を返す様子を確認してください。
それで、これは本当に私が書いたクエリの予想される動作ですか? のようなエラー メッセージが表示されることが予想されます。これは、単独Invalid column name 'id'
で実行したときに表示されるものです。select id from B