Error de columna desconocida en la 'lista de campos' en la consulta de actualización de MySQL

127

Sigo recibiendo el error # 1054 de MySQL, cuando intento realizar esta consulta de actualización:

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

Probablemente sea un error de sintaxis, pero he intentado usar una combinación interna y otras modificaciones, pero sigo recibiendo el mismo mensaje:

Unknown column 'y' in 'field list' 
Yo aquí
fuente

Respuestas:

167

Intente usar comillas diferentes para "y", ya que el carácter de comilla del identificador es la tecla de retroceso ("` "). De lo contrario, MySQL "piensa" que apunta a una columna llamada "y".

Consulte también la documentación de MySQL 5

tuergeist
fuente
Tuve esto cuando estaba confundido y usé comillas dobles en lugar de comillas simples alrededor de mis cadenas.
tripleee
48

Incluya cualquier cadena que se pase al servidor mysql entre comillas simples; p.ej:

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

Tenga en cuenta que aunque la consulta está encerrada entre comillas dobles, debe encerrar cualquier cadena entre comillas simples.

ShoushouLeb
fuente
Gracias. Estaba tratando de averiguar por qué mi consulta en PHP no funcionaba, todo lo que tenía que hacer era agregar las comillas simples.
RiCHiE
1
Sé que esta es una publicación antigua, pero ¿podría responder por qué tiene que poner citas?
RiCHiE
@RiCHiE generalmente es más seguro cuando se usan cadenas. Además, tiene más sentido para mí poner una cadena entre comillas. Cuando usa funciones como SHA1, por ejemplo, pone comillas en el contenido comoSHA1('$var')
George
Esto funcionó para mí. Primero intenté usar backticks sin suerte.
radbyx
¡Por favor, escape de todas las variables pasadas a las consultas correctamente! ¡Solo usa $name = mysqli_real_escape_string($name)para escapar de las citas correctamente!
Le 'nton
16

Puede verificar su elección de comillas (use comillas dobles / simples para valores, cadenas, etc. y comillas inversas para nombres de columna).

Como solo desea actualizar la tabla master_user_profile, le recomendaría una consulta anidada:

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
fuente
4

En mi caso, fue causado por un espacio final invisible al final del nombre de la columna. Simplemente verifique si realmente usa "y" o "y" en su lugar.

Aminah Nuraini
fuente
2

Mientras trabajaba primero en la compilación de una aplicación .Net con el código EF, recibí este mensaje de error al intentar aplicar mi migración donde tenía una Sql("UPDATE tableName SET columnName = value");declaración.

Resulta que escribí mal el columnName.

Jefe principal
fuente
1

Solo comparto mi experiencia en esto. Estaba teniendo este mismo problema. La declaración de inserción o actualización es correcta. Y también verifiqué la codificación. La columna existe. ¡Luego! Descubrí que hacía referencia a la columna en mi Trigger. También debe verificar su activador para ver si algún script hace referencia a la columna con la que tiene el problema.

Dean Chiu
fuente
1

Solo comparto mi experiencia en esto. Estaba teniendo este mismo problema. Mi consulta fue como:

select table1.column2 from table1

Sin embargo, la tabla1 no tenía columna2 columna.

usuario674669
fuente
0

Yo también recibí el mismo error, el problema en mi caso es que incluí el nombre de la columna en la GROUP BYcláusula y causó este error. ¡Así que quité la columna de la GROUP BYcláusula y funcionó!

mannedear
fuente
0

Si es hibernate y JPA. compruebe que el nombre y las columnas de su tabla de referencia no coincidan

Pobre
fuente
0

Recibí este error al usar GroupBy a través de LINQ en una base de datos MySQL. El problema era que la propiedad de objeto anónimo que estaba utilizando GroupBy no coincidía con el nombre de la columna de la base de datos. Se solucionó renombrando el nombre de la propiedad anónima para que coincida con el nombre de la columna.

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

Una consulta como esta también causará el error:

SELECT table1.id FROM table2

Donde la tabla se especifica en la columna select y no se incluye en la cláusula from.

hogarth45
fuente