Capa do tutorial mysql - como resolver erro 1054 com cláusula where

Como usar as cláusulas WHERE e AS no MySQL

O MySQL não permite que você se refira a um alias ou apelido de uma coluna (nome de um campo) de uma tabela, com a cláusula WHERE.
Vamos ver como contornar esta limitação e criar outras possibilidades e encontrar novas soluções.

Exemplo de erro 1054 no MySQL
Exemplo de erro 1054 no MySQL.

Atualmente, a query MySQL, que segue abaixo, é ilegal e vai retornar um erro:

SELECT NomeCliente, IdadeCliente, CredCliente*1000 AS Credito FROM ClientesCidades WHERE Credito < 20000;

O resultado é um erro 1054:

ERROR 1054 (42S22): Unknown column 'Credito' in 'where clause'

A cláusula WHERE não consegue enxergar a “nova” coluna Credito.

O erro 1054 (42S22) ocorre por que, enquanto o alias (AS) faz output (saída) de colunas, a cláusula WHERE opera na entrada dos dados — determinando quais linhas devem ser selecionadas para o output.

O resultado pretendido é este aqui:

SELECT NomeCliente, IdadeCliente, CredCliente*1000 AS Credito FROM ClientesCidades WHERE CredCliente < 20;
+-----------------+--------------+---------+
| NomeCliente     | IdadeCliente | Credito |
+-----------------+--------------+---------+
| Jaden Moon      |           29 |   17000 |
| Cathleen Harvey |           39 |   12000 |
| Marcia Cole     |           49 |   13000 |
| Charity Leblanc |           31 |   10000 |
| Alea Beach      |           21 |   15000 |
| April Hubbard   |           28 |   13000 |
| Fay Shaffer     |           50 |   19000 |
| Minerva Hanson  |           39 |   19000 |
| Kelsie Whitney  |           20 |   16000 |
| Illana Cannon   |           21 |   15000 |
| Kylie Bradshaw  |           20 |   16000 |
| Carly Alston    |           34 |   15000 |
| Althea Knight   |           42 |   18000 |
+-----------------+--------------+---------+
13 rows in set (0.02 sec)

Uma outra forma de obter este resultado é assim:

SELECT NomeCliente, IdadeCliente, CredCliente*1000 AS Credito FROM ClientesCidades WHERE CredCliente*1000 < 20000;
+-----------------+--------------+---------+
| NomeCliente     | IdadeCliente | Credito |
+-----------------+--------------+---------+
| Jaden Moon      |           29 |   17000 |
| Cathleen Harvey |           39 |   12000 |
| Marcia Cole     |           49 |   13000 |
| Charity Leblanc |           31 |   10000 |
| Alea Beach      |           21 |   15000 |
| April Hubbard   |           28 |   13000 |
| Fay Shaffer     |           50 |   19000 |
| Minerva Hanson  |           39 |   19000 |
| Kelsie Whitney  |           20 |   16000 |
| Illana Cannon   |           21 |   15000 |
| Kylie Bradshaw  |           20 |   16000 |
| Carly Alston    |           34 |   15000 |
| Althea Knight   |           42 |   18000 |
+-----------------+--------------+---------+
13 rows in set (0.00 sec)

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), desenvolvedor web e geek, nos mais diversos assuntos. Entusiasta de software livre e hacker de LEGO, acredito em repassar meu conhecimento e ajudar as pessoas sempre que for possível.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *