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

По-добре ли е да направите equi join в клаузата from или where

Най-общо казано, няма семантична разлика.

Има обаче един ръбов случай, в който може да се справи. Ако (отхвърлената) GROUP BY ALL конструкция се добавя към заявката, както е илюстрирано по-долу.

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. Как нулирате паролата на SA?

  2. Осигурени данни в T-SQL

  3. Колко здрав е вашият SQL сървър? Проактивното наблюдение на бази данни е критично

  4. Къде се записва задействане на сървър в SQL Server?

  5. Как да използвате свойството IDENTITY() в SQL Server