Ja, sie sind gleich. exists
prüft, ob es mindestens eine Zeile in der Unterabfrage gibt. Wenn dies der Fall ist, wird es als true
ausgewertet . Die Spalten in der Unterabfrage spielen keine Rolle.
Laut MSDN ist exists
:
Gibt eine Unterabfrage an, die auf das Vorhandensein von Zeilen getestet werden soll.
Und Orakel:
Eine EXISTS-Bedingung testet das Vorhandensein von Zeilen in einer Unterabfrage.
Vielleicht erklärt die MySQL-Dokumentation noch mehr:
Traditionell beginnt eine EXISTS-Unterabfrage mit SELECT *, aber sie könnte auch mit SELECT 5 oder SELECT column1 oder irgendetwas anderem beginnen. MySQL ignoriert die SELECT-Liste in einer solchen Unterabfrage, also macht es keinen Unterschied.