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

Tốt hơn là thực hiện một phép nối Equi trong mệnh đề from hoặc mệnh đề where

Nói chung, nó không tạo ra sự khác biệt về ngữ nghĩa.

Có một trường hợp cạnh mà nó có thể làm được. Nếu (không được dùng nữa) GROUP BY ALL cấu trúc được thêm vào truy vấn như minh họa bên dưới.

DECLARE @A TABLE(A_ID INT, DURATION DECIMAL(3,2) )
INSERT INTO @A VALUES(1,2.00)

DECLARE @B TABLE(A_ID INT)
INSERT INTO @B VALUES(1)

/*Returns one row*/
SELECT *
FROM @A A
INNER JOIN @B B ON A.A_ID = B.A_ID
WHERE A.DURATION = 3.00
GROUP BY ALL A.A_ID, A.DURATION, B.A_ID

/*Returns zero rows*/    
SELECT *
FROM @A A
INNER JOIN @B B ON A.A_ID = B.A_ID  AND A.DURATION = 3.00
GROUP BY ALL A.A_ID, A.DURATION, B.A_ID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng BETWEEN trên một trường varchar không phải là một trường số?

  2. Bí quyết khôi phục các bản ghi đã xóa trong SQL Server

  3. Hiểu hàm PIVOT trong T-SQL

  4. Cú pháp nối nào tốt hơn?

  5. Tạo cột được tính toán bằng cách sử dụng dữ liệu từ một bảng khác