Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Podzapytanie używające Exists 1 lub Exists *

Nie, SQL Server jest inteligentny i wie, że jest używany jako ISTNIEJE, i nie zwraca do systemu ŻADNYCH DANYCH.

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

Lista wyboru podzapytania wprowadzonego przez EXISTS prawie zawsze składa się z gwiazdki (*). Nie ma powodu, aby wymieniać nazwy kolumn, ponieważ po prostu sprawdzasz, czy istnieją wiersze spełniające warunki określone w podzapytaniu.

Aby się sprawdzić, spróbuj wykonać następujące czynności:

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

Gdyby faktycznie robił coś z listą SELECT, wyrzuciłby div przez zero błędu. Nie.

EDYCJA:Uwaga, standard SQL faktycznie mówi o tym.

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

3) Przypadek:
a) Jeśli <select list> "*" jest po prostu zawarty w <subquery> to jest natychmiast zawarte w <exists predicate> , a następnie <select list> jest odpowiednikiem wyrażenia <value expression> czyli dowolny <literal> .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy ciąg jest unikalnym identyfikatorem?

  2. Jak znaleźć format daty używany w bieżącej sesji w SQL Server (T-SQL)

  3. Czy zła praktyka to NOLOCK (wskazówka dotycząca serwera SQL)?

  4. Lista formatów dat dostępnych z CONVERT() w SQL Server

  5. 4 kluczowe działania związane z monitorowaniem baz danych, które każdy administrator baz danych powinien wiedzieć