sql >> Database >  >> RDS >> Sqlserver

Wat is het verschil tussen het gebruik van een cross join en het plaatsen van een komma tussen de twee tabellen?

Ze retourneren dezelfde resultaten omdat ze semantisch identiek zijn. Dit:

select * 
  from A, B

...is (huiverend) ANSI-89-syntaxis. Zonder een WHERE-clausule om de tabellen aan elkaar te koppelen, is het resultaat een cartesiaans product. En dat is precies wat alternatief ook biedt:

    select * 
      from A 
cross join B

...maar de CROSS JOIN is de ANSI-92-syntaxis.

Over prestaties

Er is geen prestatieverschil tussen hen.

Waarom ANSI-92 gebruiken?

De reden om de ANSI-92-syntaxis te gebruiken is voor OUTER JOIN-ondersteuning (IE:LEFT, FULL, RIGHT) -- ANSI-89-syntaxis heeft er geen, dus veel databases hebben hun eigen geïmplementeerd (die niet naar andere databases wordt geporteerd) ). IE:Oracle's (+) , SQL Server =*



  1. PDO laat de laatste ID invoegen

  2. ProxySQL-native clustering met Kubernetes

  3. Mysql localhost !=127.0.0.1?

  4. SQLAlchemy - SQLite voor testen en Postgresql voor ontwikkeling - Hoe overzetten?