sql >> Database teknologi >  >> RDS >> Sqlserver

Underforespørgsel ved hjælp af Exists 1 eller Exists *

Nej, SQL Server er smart og ved, at den bliver brugt til en EXISTS, og returnerer INGEN DATA til systemet.

Quoth Microsoft:http://technet.microsoft.com/en-us/library/ms189259.aspx?ppud=4

Den udvalgte liste over en underforespørgsel introduceret af EXISTS består næsten altid af en stjerne (*). Der er ingen grund til at angive kolonnenavne, fordi du bare tester, om rækker, der opfylder betingelserne specificeret i underforespørgslen, eksisterer.

For at tjekke dig selv, prøv at køre følgende:

SELECT whatever
  FROM yourtable
 WHERE EXISTS( SELECT 1/0
                 FROM someothertable 
                WHERE a_valid_clause )

Hvis den rent faktisk gjorde noget med SELECT-listen, ville den kaste en div med nul fejl. Det gør den ikke.

EDIT:Bemærk, SQL-standarden taler faktisk om dette.

ANSI SQL 1992 Standard, s. 191 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

3) Sag:
a) Hvis "*" er simpelthen indeholdt i en der er umiddelbart indeholdt i en , derefter svarer til et det er en vilkårlig .



  1. Indstilling af MySQL-konfigurationsvariabler – MySQL 5.7 vs MySQL 8.0

  2. JSON_STORAGE_FREE() – Find ud af, hvor meget lagerplads der blev frigivet efter en opdatering af et JSON-dokument i MySQL

  3. Hvordan genskaber man en slettet tabel med Django Migrations?

  4. Opret en hjemmeside med MySQL