Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn con sử dụng Tồn tại 1 hoặc Tồn tại *

Không, SQL Server thông minh và biết nó đang được sử dụng cho một TỒN TẠI và trả về KHÔNG CÓ DỮ LIỆU cho hệ thống.

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

Danh sách chọn lọc của truy vấn con do EXISTS giới thiệu hầu như luôn có dấu hoa thị (*). Không có lý do gì để liệt kê tên cột vì bạn chỉ đang kiểm tra xem các hàng đặt điều kiện được chỉ định trong truy vấn con có tồn tại hay không.

Để tự kiểm tra, hãy thử chạy như sau:

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

Nếu nó thực sự đang làm điều gì đó với danh sách SELECT, nó sẽ ném ra lỗi div bằng 0. Nó không.

CHỈNH SỬA:Lưu ý, Chuẩn SQL thực sự nói về điều này.

Tiêu chuẩn ANSI SQL 1992, trang 191 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

3) Trường hợp:
a) Nếu <select list> "*" chỉ được chứa trong một <subquery> thatis ngay lập tức được chứa trong một <exists predicate> , rồi đến <select list> tương đương với <value expression> đó là một <literal> tùy ý .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bao gồm bảng &lược đồ khi liệt kê các cột nhận dạng trong cơ sở dữ liệu máy chủ SQL

  2. Sử dụng INSERT INTO từ SQL Server để thay đổi dữ liệu Salesforce

  3. Những lầm tưởng về hiệu suất máy chủ SQL có hại, phổ biến

  4. Cách mới để sao chép tệp trong SQL Server 2019

  5. Sao chép dữ liệu từ Salesforce sang SQL Server với Spectral Core