SELECT IN (...) bringt keinen Fehler, ist das Feature oder Bug?

13/09/2007 - 12:41 von DMCPSJMNTZIH | Report spam
Hallo Gruppe,

vielleicht wurde das schon mal diskutiert.
Bei der folgenden SQL Server Abfrage

CREATE TABLE #Table1 (Field1 varchar(100))
CREATE TABLE #Table2 (Field2 varchar(100))

SELECT *
FROM #Table1
WHERE Field1 IN (SELECT Field1 FROM #Table2)

bring der SQL Server 2000 und 2005 keinen Fehler obwohl die innere
Abfrage

SELECT Field1 FROM #Table2

eindeutig fehlerhaft ist.

Im Ausführungsplan sieht man, dass der SQL Server daraus "WHERE:
(#Table1.Field1 = #Table1.Field1)" macht, was ja nicht meiner Abfrage
entspricht!

Ist das Feature oder Bug?

Christian
Email: cstryi (a) gmx . de
 

Lesen sie die antworten

#1 Frank Kalis
13/09/2007 - 13:16 | Warnen spam
"" wrote:

vielleicht wurde das schon mal diskutiert.
Bei der folgenden SQL Server Abfrage

CREATE TABLE #Table1 (Field1 varchar(100))
CREATE TABLE #Table2 (Field2 varchar(100))

SELECT *
FROM #Table1
WHERE Field1 IN (SELECT Field1 FROM #Table2)

bring der SQL Server 2000 und 2005 keinen Fehler obwohl die innere
Abfrage

SELECT Field1 FROM #Table2

eindeutig fehlerhaft ist.

Im Ausführungsplan sieht man, dass der SQL Server daraus "WHERE:
(#Table1.Field1 = #Table1.Field1)" macht, was ja nicht meiner Abfrage
entspricht!

Ist das Feature oder Bug?




Lies Dir das mal durch
http://groups.google.com/group/micr...f1ce20f69d
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.de

Ähnliche fragen