Coluna desconhecida no erro 'lista de campos' na consulta Atualização do MySQL

127

Eu continuo recebendo o erro MySQL # 1054, ao tentar executar esta consulta de atualização:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17

Provavelmente é algum erro de sintaxe, mas tentei usar uma junção interna e outras alterações, mas continuo recebendo a mesma mensagem:

Unknown column 'y' in 'field list' 
eu aqui
fonte

Respostas:

167

Tente usar aspas diferentes para "y", pois o caractere de aspas identificador é o bastão ("` "). Caso contrário, o MySQL "acha" que você aponta para uma coluna chamada "y".

Veja também Documentação do MySQL 5

tuergeist
fonte
Eu tive isso quando estava confuso e usei aspas duplas em vez de aspas simples ao redor das minhas cordas.
tripleee
48

Coloque qualquer string a ser passada para o servidor mysql entre aspas simples; por exemplo:

$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "

Observe que, embora a consulta esteja entre aspas duplas, você deve colocar qualquer sequência entre aspas simples.

ShoushouLeb
fonte
Obrigado. Eu estava tentando descobrir por que minha consulta em PHP não estava funcionando, tudo que eu precisava fazer era adicionar aspas simples.
RiCHiE
1
Sei que este é um post antigo, mas você seria capaz de responder por que precisa colocar aspas?
RiCHiE
@RiCHiE geralmente é mais seguro ao usar strings. Além disso, faz mais sentido para mim colocar uma string entre aspas. Quando você usa funções como SHA1, por exemplo, coloca aspas no conteúdo como:SHA1('$var')
George
Isso funcionou para mim. Primeiro, tentei usar reticulares sem sorte.
Radbyx # 04/19
Por favor, escape todas as variáveis ​​passadas para as consultas corretamente! Basta usar $name = mysqli_real_escape_string($name)para escapar de citações corretamente!
Le 'nton 28/03/19
16

Você pode verificar sua escolha de aspas (use aspas duplas / simples para valores, seqüências de caracteres etc. e reticulares para nomes de colunas).

Como você só deseja atualizar a tabela master_user_profile, recomendo uma consulta aninhada:

UPDATE
   master_user_profile
SET
   master_user_profile.fellow = 'y'
WHERE
   master_user_profile.user_id IN (
      SELECT tran_user_branch.user_id
      FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);
Tim Cooper
fonte
4

No meu caso, isso foi causado por um espaço invisível no final do nome da coluna. Basta verificar se você realmente usa "y" ou "y".

Aminah Nuraini
fonte
2

Enquanto trabalhava em um aplicativo .Net compilado com o código EF primeiro, recebi essa mensagem de erro ao tentar aplicar minha migração onde estava uma Sql("UPDATE tableName SET columnName = value");declaração.

Acontece que eu escrevi errado o columnName.

Masterchief
fonte
1

Apenas compartilhando minha experiência nisso. Eu estava tendo esse mesmo problema. A instrução de inserção ou atualização está correta. E eu também verifiquei a codificação. A coluna existe. Então! Eu descobri que estava fazendo referência à coluna no meu Trigger. Você também deve verificar seu gatilho para ver se algum script está referenciando a coluna com a qual você está tendo problemas.

Dean Chiu
fonte
1

Apenas compartilhando minha experiência nisso. Eu estava tendo esse mesmo problema. Minha consulta foi como:

select table1.column2 from table1

No entanto, a tabela1 não possui a coluna column2.

user674669
fonte
0

Eu também recebi o mesmo erro, o problema no meu caso é que incluí o nome da coluna na GROUP BYcláusula e causou esse erro. Removida a coluna da GROUP BYcláusula e funcionou !!!

homem
fonte
0

Se for hibernar e JPA. verifique o nome e as colunas da tabela referida pode ser uma incompatibilidade

Poorna
fonte
0

Eu recebi esse erro ao usar o GroupBy via LINQ em um banco de dados MySQL. O problema era que a propriedade de objeto anônimo que estava sendo usada pelo GroupBy não correspondia ao nome da coluna do banco de dados. Corrigido renomeando o nome da propriedade anônima para corresponder ao nome da coluna.

.Select(f => new 
{
   ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);
Eternal21
fonte
0

Uma consulta como esta também causará o erro:

SELECT table1.id FROM table2

Onde a tabela é especificada na coluna, selecione e não inclua na cláusula from.

hogarth45
fonte