sql >> Databasteknik >  >> RDS >> Sqlserver

Är det bättre att göra en equi join i from- eller where-klausulen

Generellt sett gör det ingen semantisk skillnad.

Det finns dock ett kantfall där det kan göra. Om (utfasad) GROUP BY ALL konstruktion läggs till i frågan enligt illustrationen nedan.

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. Dynamisk PL/SQL-datumparameter med bibehållet tidsvärde

  2. Så här ändrar du språket för din Oracle-session

  3. Mysqldump endast tabeller med vissa prefix / Mysqldump jokertecken?

  4. Returnera en lista över partitionsscheman i SQL Server (T-SQL)