Cuando intento ejecutar una rutina, me sale el siguiente error:

Código De Error: 1166. Incorrecta el nombre de columna ‘Escuela`.Nombre de la escuela` =
cuando la Escuela`.Web Nombre de la Escuela` es nulo, entonces la Escuela`.Nombre De La Escuela`
els

He vuelto a revisar el nombre de la columna y de hecho hay una School.School Name. No hay espacios iniciales o finales. Aquí es el comienzo de la rutina que el error se refiere a:

CREATE temporary TABLE tt_Step1
SELECT DISTINCT State.Code, State.Name, 
School.`School Name` = case 
    when School.`Web School Name` is null then School.`School Name`
    else School.`Web School Name`
    end,
School.`School ID` 
-- Into tt_Step1
FROM State LEFT JOIN School ON State.Code = School.State 
Where (School.`School ID` <> ...

Recientemente he convertido este código de MSSQL a MySQL por lo que hay algo que me perdí, pero no puedo encontrar ningún error. El original MSSQL consulta se ejecuta correctamente en SQL Server Management Studio, pero la versión convertida de que en MySQL no.

Nombre de la columna con el espacio no puede suceder en MySQL : dev.mysql.com/doc/refman/5.0/en/identifiers.html
Que no es absolutamente cierto. La única cosa que enlaza el doc dice que es cannot **end** with space characters.
Por qué voto de esto? Este es un perfecto y fino PARA la pregunta.

OriginalEl autor Travis P | 2012-03-28

4 Comentarios

  1. 4

    Dar a este un tiro:

    CREATE temporary TABLE tt_Step1
    SELECT DISTINCT State.Code, State.Name, 
    coalesce(School.`Web School Name`, School.`School Name`),
    School.`School ID` 
    -- Into tt_Step1
    FROM State LEFT JOIN School ON State.Code = School.State 
    Where (School.`School ID` <> ...
    He utilizado «se unen(de la Escuela.Web School Name, De la escuela.School Name) como School Name«. Este todo funciona pero a veces el Nombre de la Escuela se vuelve como un 0 o un 1 para algunas entradas.
    Se unen todas hace es comprobar que el primer argumento es null, si es null, utilice el segundo argumento en su lugar. Si usted está volviendo a «0» y «1» de los unen, es porque hay datos en su mesa de la Escuela con «0» y «1» en las columnas.
    Sí, no estoy seguro de lo que está pasando. He comprobado manualmente la tabla y con una consulta y no encontrar los valores de 0 o 1. De todos modos, he utilizado el viejo caso de la declaración y de alias correctamente y tanto los resultados que se devuelven lo mismo, así que voy a aceptar esta respuesta. Estoy teniendo otros problemas aparentemente. Muchas gracias por la ayuda.

    OriginalEl autor robertvoliva

  2. 2

    Usted tiene un par de problemas.

    1. Usted no puede alias de una columna con un nombre de varias partes como School.School Name.
    2. Aliasing en MySql se realiza con blah as ColumnName, no ColumnName = blah.

    OriginalEl autor mellamokb

  3. 2

    En mi caso, fue causada por una invisible espacio adicional después de que el nombre de la columna. Escribí promotion-ids en lugar de promotion-id.

    OriginalEl autor Aminah Nuraini

  4. -1

    He tenido un problema similar. Mi problema fue resuelto mediante la adición de un nombre de columna para el caso de la declaración.

    Ejemplo:

    Case
    
      when val <.5 then "low"
    
      when val >1 then "high"
    
    end as valTest

    sin as valTest me gustaría conseguir el 1166 error.

    OriginalEl autor sealamb

Dejar respuesta

Please enter your comment!
Please enter your name here