sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är skillnaden mellan att använda en korskoppling och att sätta ett kommatecken mellan de två tabellerna?

De returnerar samma resultat eftersom de är semantiskt identiska. Detta:

select * 
  from A, B

...är (wince) ANSI-89-syntax. Utan en WHERE-klausul för att länka samman tabellerna blir resultatet en kartesisk produkt. Vilket är precis vad alternativet också ger:

    select * 
      from A 
cross join B

...men CROSS JOIN är ANSI-92-syntaxen.

Om prestanda

Det är ingen prestandaskillnad mellan dem.

Varför använda ANSI-92?

Anledningen till att använda ANSI-92-syntax är för OUTER JOIN-stöd (dvs. VÄNSTER, HELT, HÖGER)--ANSI-89-syntax har ingen, så många databaser implementerade sina egna (som inte portar till några andra databaser ). IE:Oracles (+) , SQL Servers =*



  1. Importera Excel-data till PostgreSQL 9.3

  2. MySQL Fire Trigger för både Insert och Update

  3. En guide till PubNub-funktioner

  4. Vad är en formatsträng i SQL Server?