Най-общо казано, няма семантична разлика.
Има обаче един ръбов случай, в който може да се справи. Ако (отхвърлената) 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