sql >> Database >  >> RDS >> Mysql

Kan iemand helpen uitleggen waarom het niet gebruiken van een SQL JOIN een slechte gewoonte en verkeerd is?

Het is waar dat beide vormen van syntaxis hetzelfde resultaat zouden moeten geven en intern voert MySQL ze allebei op precies dezelfde manier uit. Huidige versies van de SQL-standaard ondersteunen beide vormen, hoewel de komma-stijl alleen wordt ondersteund omwille van achterwaartse compatibiliteit.

Er is een geval waarin het gebruik van de komma-achtige syntaxis mislukt, maar het is exotisch:

SELECT * FROM A, B JOIN C ON C.x = A.y;

De JOIN operator heeft een hogere prioriteit dan de komma. Dus zoals de bovenstaande query probeert C.x = A.y . te evalueren het weet niet eens dat A maakt deel uit van de vraag. U krijgt dus een foutmelding:

ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'

De beste remedie is om de JOIN . te gebruiken syntaxis consistent in plaats van ze te mixen.

Ook kun je geen outer joins maken met de comma-join syntax. Oracle en Sybase/Microsoft hebben elk hun eigen gepatenteerde syntaxis uitgevonden voor het afhandelen van outer joins, maar geen van beide wordt ondersteund door andere merken van RDBMS. Tegenwoordig ondersteunen alle huidige versies van RDBMS, inclusief Oracle en Sybase/Microsoft, de standaard JOIN syntaxis, dus er is geen goede reden om de oude leverancierspecifieke extensies te gebruiken.



  1. Een lijst met geldige tijdzones retourneren in Oracle Database

  2. Een database-e-mailaccount bijwerken in SQL Server (T-SQL)

  3. Gegevens synchroniseren tussen twee verschillende databases

  4. Hoe te controleren of er een beperking bestaat in de SQL-server?