Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy lepiej zrobić equi łączyć w klauzuli from czy klauzula where?

Ogólnie rzecz biorąc, nie ma to znaczenia semantycznego.

Jest jednak jeden skrajny przypadek, w którym może to zrobić. Jeśli (przestarzałe) GROUP BY ALL konstrukcja zostanie dodana do zapytania, jak pokazano poniżej.

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. eksport z serwera sql do pliku Excel za pomocą asp.net i vb.net?

  2. Lista typów danych w SQL Server 2017

  3. Jak edytować opcje serwera połączonego za pomocą T-SQL

  4. Linq To Sql i identity_insert

  5. wyjątek połączenia oledb