MySQL Alias ??Pergunta
-
05-07-2019 - |
Pergunta
eu estou querendo saber por que essa falha
mysql> SELECT Continent C, Name, SurfaceArea -> FROM Country -> WHERE SurfaceArea = ( -> SELECT MAX(SurfaceArea) -> FROM Country -> WHERE Continent = C); ERROR 1054 (42S22): Unknown column 'C' in 'where clause'
sua resposta um fornecido pelo guia de certificação para alguns exercícios de amostra.
btw, por apelido quando eu tenho que usar como? isit opcional?
Solução
Para executar uma subconsulta correlacionada, você precisa de um alias para o tabela externa . Você criou um alias para campo da tabela externa . Dê uma olhada no código corrigido abaixo, que tem um alias para a tabela (Cou) que é referenciada na subconsulta (note que o alias campo não é necessária para que eu o retirei. Não há nenhum mal em adicioná-lo novamente, se desejar) :
SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea =
(
SELECT MAX(SurfaceArea)
FROM Country
WHERE Continent = Cou.Continent
);
Em relação ao uso de AS, que é opcional. Por exemplo, na consulta acima você poderia escrever Country AS Cou
, seria o mesmo.
Outras dicas
Eu estou supondo que ele tem algo a ver com você está versão do MySQL. Eu apenas testada exatamente a mesma consulta e ele consegue (syntaxically pelo menos). Isso é com MySQL 5.0.45 .
Se a versão do MySQL não é o problema, você pode também tentar digitar novamente a consulta. Pode parecer bobagem, mas às vezes impublicável caracteres podem escorregar na sua consulta, enquanto digitação ou copiar / colar (estou pensando copiar / colar a partir de um PDF aqui, especialmente, uma vez que é a partir de um guia).
E, sim, AS
é opcional para aliases.