Eu tenho uma consulta simples:
SELECT u_name AS user_name FROM users WHERE user_name = "john";
Eu entendo Unknown Column 'user_name' in where clause
. Não posso me referir 'user_name'
em outras partes da declaração mesmo depois select 'u_name as user_name'
?
mysql
sql
mysql-error-1054
Btuman
fonte
fonte
A respeito:
fonte
HAVING
vez deWHERE
neste caso?Consulte a seguinte página de manual do MySQL: http://dev.mysql.com/doc/refman/5.0/en/select.html
(...)
fonte
Pense assim, sua cláusula where avalia primeiro, para determinar quais linhas (ou linhas unidas) precisam ser retornadas. Depois que a cláusula where é executada, a cláusula select é executada.
Para colocar de uma maneira melhor, imagine o seguinte:
Você não pode fazer referência à primeira metade sem a segunda. Onde sempre é avaliado primeiro, depois a cláusula select.
fonte
Se você estiver tentando executar uma consulta como a seguinte (encontre todos os nós com pelo menos um anexo) em que você usou uma instrução SELECT para criar um novo campo que não existe realmente no banco de dados e tente usar o alias para esse resultado, você encontrará o mesmo problema:
Você receberá um erro "Coluna desconhecida 'attachmentcount' na cláusula WHERE".
A solução é realmente bastante simples - basta substituir o alias pela declaração que produz o alias, por exemplo:
Você ainda receberá o alias retornado, mas agora o SQL não deve trabalhar com o alias desconhecido.
fonte
(
na sua consulta antes da(COUNT(*)
que não seja fechada em nenhum lugar.Seu definido
alias
não é bem-vindo pelaWHERE
cláusula em que você deve usar aHAVING
cláusula para esteOU você pode usar diretamente o nome da coluna original com o
WHERE
O mesmo que o resultado no alias definido pelo usuário como resultado da subconsulta ou de qualquer cálculo que será acessado pela
HAVING
cláusula e não peloWHERE
fonte
Ou:
ou:
O último deve ser o mesmo que o primeiro se o RDBMS suportar o envio de predicado para a exibição em linha.
fonte
corrigido:
fonte
Não, você precisa selecioná-lo com o nome correto. Se você forneceu a tabela que selecionou de um alias, você pode usá-lo.
fonte
Não, você não pode. user_name is não existe até a hora do retorno.
fonte
Coluna desconhecida na
WHERE
cláusula causada pelas linhas 1 e 2 e resolvida pela linha 3:$sql = "SELECT * FROM users WHERE username =".$userName;
$sql = "SELECT * FROM users WHERE username =".$userName."";
$sql = "SELECT * FROM users WHERE username ='".$userName."'";
fonte
Pode ser que ajude.
Você pode
Funciona.
MAS TENHA CERTEZA DO QUE VOCÊ FAZ!
Mas, pode ser que isso ajude em alguns casos
fonte
Embora você possa criar um alias de suas tabelas em sua consulta (por exemplo, "SELECT u.username FROM users u;"), você deve usar os nomes reais das colunas às quais está fazendo referência. O AS afeta apenas como os campos são retornados.
fonte
fonte
Só tive esse problema.
Verifique se não há espaço no nome da entidade no banco de dados.
por exemplo, 'nome_do_usuário' em vez de 'nome_do_usuário'
fonte
tente sua tarefa usando a condição IN ou OR e também esta consulta está funcionando no spark-1.6.x
ou
fonte
Para mim, a raiz do problema era um número que copiei para usar em uma cláusula WHERE. O número tinha o símbolo "invisível", pelo menos para o MySQL Workbench. Coloquei o número no console do Chrome que estava claramente visível.
fonte
Eu tive o mesmo problema, achei isso útil.
lembre-se de colocar $ user em '' aspas simples.
fonte