Ik ga in op de vraag of die ongelijkheden altijd . zijn WAAR. Het antwoord is "nee", niet in SQL. Onder de meeste omstandigheden zijn ze gelijkwaardig. Het probleem doet zich voor bij impliciete typeconversie.
In het bijzonder, als a.id
is een getal en andere kolommen zijn strings, dan heb je de situatie waarin:
1 = '1' -- true
1 = '1.00' -- true
'1' = '1.00' -- false
Je kunt dit
zien op deze db<>viool. Het zou triviaal zijn om dit in te stellen met JOIN
s, maar aangezien ik geen code ga schrijven met komma's in de FROM
clausule, laat ik die oefening aan jou over.
In de praktijk moeten id's die worden gebruikt voor joins van hetzelfde type zijn. U kunt zelfs geen relatie met een externe sleutel aangeven als dat niet het geval is. Afgezien van deze best practice zijn de twee zoekopdrachten niet automatisch equivalent.
Opmerking:dit zou net zo waar zijn als u de juiste, expliciete, standaard . zou gebruiken JOIN
syntaxis, die ik u ten zeerste aanmoedig om uitsluitend te leren en te gebruiken.