sql >> Database >  >> RDS >> Sqlserver

Is het beter om een ​​equi-join te doen in de from-clausule of waar-clausule

Over het algemeen maakt het geen semantisch verschil.

Er is echter één randgeval waar het wel kan. Als de (verouderde) GROUP BY ALL construct wordt toegevoegd aan de query zoals hieronder geïllustreerd.

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. MySql-opdrachtregeltool voor bulkladen

  2. Monitoring &Ops Management van MySQL 8.0 met ClusterControl

  3. Waarom registreert het aanroepen van Class.forName(com.mysql.jdbc.Driver) de MySQL voor JDBC?

  4. Genereer een willekeurige LocalDate met java.time