重複の可能性:
列はIN句に存在しませんが、SQLは実行されます
私は今日仕事中にこれに遭遇しました、そして私は疑問に思いました、なぜ次のコードが生成されずエラーになるのですか?
CREATE TABLE #TableA (ColumnA VARCHAR(25))
CREATE TABLE #TableB (ColumnB VARCHAR(25))
INSERT INTO #TableA (ColumnA) VALUES('1')
INSERT INTO #TableA (ColumnA) VALUES('2')
INSERT INTO #TableA (ColumnA) VALUES('3')
INSERT INTO #TableB (ColumnB) VALUES('1')
SELECT *
FROM #TableA
WHERE ColumnA IN(SELECT ColumnA FROM #TableB)
出力:
ColumnA
1
2
3
ColumnAは#TableBに存在しませんが、エラーが生成されないのはなぜですか?
@@ VERSIONは、これを実行していることを示しています。
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) Jul 9 2008 14:17:44 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)