Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Existiert / existiert nicht:'select 1' vs 'select field'

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.