Categories
Banco de dados Tutoriais

Como usar as cláusulas WHERE e AS no MySQL

Como contornar o erro 1054 (42S22), no MySQL. O erro surge ao usar uma cláusula WHERE, se referindo a uma apelido (alias) de coluna.

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)

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.