MySQL als trefwoord

Ik ben niet professioneel in het schrijven van query, maar schreef velen uit de tijd die ik begon met MySQL. Onlangs merkte ik dat het niet nodig is om AStrefwoord in naam aliasing te typen.

SELECT name AS n

is gelijk aan

SELECT name n

Ik weet echter dat dit vermogen uit jaren geleden uitkomt. Ik heb 2 vragen rond dit onderwerp:

  1. is AStrefwoord overbodig?
  2. Soms geleden toen ik met een aangepaste query op een website tegenkwam met het hebben van geen ASin aliasing, dat de uitvoering van MySQL-service is uitgevoerd, heb ik de manier van naam aliasing gewijzigd met het toevoegen van AStrefwoord en deze kleine verandering heeft het werken!

    Wat was het probleem hier?


Antwoord 1, Autoriteit 100%

Voor het antwoord op 1), de MySQL-documentatie http: // dev.mysql.com/doc/refman/5.0/en/select.html :

A SELECT_EXPR kan een alias krijgen met behulp van AS ALIAS_NAME. De alias is
gebruikt als de kolomnaam van de uitdrukking en kan worden gebruikt in GROUP BY,
ORDER BY, OF HAVINGCAUSES. Bijvoorbeeld:

SELECT CONCAT(last_name,', ',first_name) AS full_name   FROM mytable
ORDER BY full_name;

Het als trefwoord is optioneel wanneer u een selecte -xpr wordt aliasing met een
Identifier. Het voorgaande voorbeeld zou zo kunnen worden geschreven:

SELECT CONCAT(last_name,', ',first_name) full_name   FROM mytable
ORDER BY full_name;

Omdat de AS echter optioneel is, kan er een subtiel probleem optreden als u
vergeet de komma tussen twee select_expr-expressies: MySQL interprets
de tweede als een aliasnaam. In de volgende verklaring wordt bijvoorbeeld
columnb wordt behandeld als een aliasnaam:

SELECT columna columnb FROM mytable;

Om deze reden is het een goede gewoonte om AS . te gebruiken
expliciet bij het specificeren van kolomaliassen.

Het is niet toegestaan om te verwijzen naar een kolomalias in een WHERE-clausule,
omdat de kolomwaarde mogelijk nog niet is bepaald wanneer de WHERE
clausule wordt uitgevoerd. Zie Paragraaf C.5.5.4, “Problemen met Kolom
Aliassen”.

Dit is ook syntactisch vergelijkbaar voor tabellen:

Een tabelverwijzing kan worden gealiast met tbl_name AS alias_name of
tbl_name alias_name:

SELECT t1.name, t2.salary FROM employee AS t1, info AS t2   WHERE
t1.name = t2.name;
SELECT t1.name, t2.salary FROM employee t1, info t2   WHERE t1.name =
t2.name;

Voor het antwoord op 2) Ik denk niet dat je het kunt zien zonder een volledige beschrijving van de softwareversies, de query die wordt uitgevoerd en de ontvangen foutmeldingen.

Other episodes