Différence entre le filtrage des requêtes dans JOIN et WHERE?

EN SQL j'essaye de filtrer les résultats basés sur un ID et je me demande s'il y a une différence logique entre

SELECT value 
FROM table1 
JOIN table2 ON table1.id = table2.id 
WHERE table1.id = 1

et

SELECT value 
FROM table1 
JOIN table2 ON table1.id = table2.id AND table1.id = 1

pour moi, il semble que la logique soit différente bien que vous obtiendrez toujours le même ensemble de résultats mais je me suis demandé s'il y avait des conditions dans lesquelles vous obtiendriez deux ensembles de résultats différents (ou retourneraient-ils toujours exactement les mêmes deux ensembles de résultats)

22
demandé sur davejal 2015-12-24 18:25:28

3 réponses

La réponse est NO différence, mais:

je préfère toujours faire ce qui suit.

  • Toujours garder à l' Joindre Les ConditionsON clause
  • Toujours mettre le filtrewhere clause

ceci rend la requête plus lisible.

je vais Donc utiliser cette requête:

SELECT value
FROM table1
INNER JOIN table2
        ON table1.id = table2.id
WHERE table1.id = 1

cependant quand vous utilisez OUTER JOIN'S il y a un grand différence en gardant le filtre dans le