sql >> Databáze >  >> RDS >> Sqlserver

Jaký je rozdíl mezi použitím křížového spojení a vložením čárky mezi dvě tabulky?

Vracejí stejné výsledky, protože jsou sémanticky identické. Toto:

select * 
  from A, B

...je syntaxe ANSI-89. Bez klauzule WHERE, která spojuje tabulky dohromady, je výsledkem kartézský součin. Což je přesně to, co alternativa také poskytuje:

    select * 
      from A 
cross join B

...ale CROSS JOIN je syntaxe ANSI-92.

O výkonu

Není mezi nimi žádný výkonnostní rozdíl.

Proč používat ANSI-92?

Důvodem použití syntaxe ANSI-92 je podpora OUTER JOIN (IE:LEFT, FULL, RIGHT) – syntaxe ANSI-89 žádnou nemá, takže mnoho databází implementovalo svou vlastní (která se neportuje do žádné jiné databáze ). IE:Oracle (+) , =* serveru SQL Server



  1. 3 způsoby, jak vrátit řádky, které obsahují alfanumerické znaky na serveru SQL

  2. Oracle nerozlišuje mezi nulami a prázdnými řetězci?

  3. SQL:Co je lepší bit nebo znak (1)

  4. Přehled nástrojů databázových diagramů dostupných pro PostgreSQL