Nein, SQL Server ist intelligent und weiß, dass er für EXISTS verwendet wird, und gibt KEINE DATEN an das System zurück.
Quoth Microsoft:http://technet.microsoft.com/en-us/library/ms189259.aspx?ppud=4
Die Auswahlliste einer durch EXISTS eingeleiteten Unterabfrage besteht fast immer aus einem Sternchen (*). Es gibt keinen Grund, Spaltennamen aufzulisten, da Sie nur testen, ob Zeilen vorhanden sind, die die in der Unterabfrage angegebenen Bedingungen erfüllen.
Um sich selbst zu überprüfen, führen Sie Folgendes aus:
SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable
WHERE a_valid_clause )
Wenn es tatsächlich etwas mit der SELECT-Liste machen würde, würde es einen div-by-null-Fehler auslösen. Das tut es nicht.
BEARBEITEN:Beachten Sie, dass der SQL-Standard tatsächlich darüber spricht.
ANSI SQL 1992 Standard, Seite 191 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
3) Fall:
a) Wenn <select list>
"*" ist einfach in einem <subquery>
enthalten das ist sofort in einem <exists predicate>
enthalten , dann <select list>
entspricht einem <value expression>
das ist ein beliebiger <literal>
.