Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Подзаявка, използваща Exists 1 или Exists *

Не, SQL Server е интелигентен и знае, че се използва за EXISTS и не връща НИКАКВИ ДАННИ към системата.

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

Списъкът за избор на подзаявка, въведен от EXISTS, почти винаги се състои от звездичка (*). Няма причина да изброявате имена на колони, защото просто тествате дали съществуват редове, които отговарят на условията, посочени в подзаявката.

За да проверите сами, опитайте да изпълните следното:

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

Ако действително правеше нещо със списъка SELECT, щеше да изведе грешка div по нула. Не е така.

РЕДАКТИРАНЕ:Забележете, SQL стандартът всъщност говори за това.

Стандарт ANSI SQL 1992, стр. 191 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

3) Случай:
a) Ако е еквивалентен на <израз за стойност> това е произволен .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server използва висок процесор при търсене в nvarchar низове

  2. Вредни, широко разпространени митове за производителността на SQL Server

  3. Какво означава ПОРЪЧАЙТЕ (ИЗБЕРЕТЕ NULL)?

  4. Какво е @@TEXTSIZE в SQL Server?

  5. T-SQL Cast срещу Convert