Синтаксическая ошибка Mysql с CONCAT - PullRequest
0 голосов
/ 01 марта 2012

Эй, ребята, по какой-то причине я получаю синтаксическую ошибку на своих КОНКАТАХ, это очень странно, поскольку это в значительной степени копирование / вставка из другого моего запроса с использованием КОНКАТОВ, который работает безупречно?

Вотнеправильный запрос

SELECT 
    brand, 
    case_count AS case, 
    variety, 
    style, 
    grower_lot AS lot, 
    pack_date AS date, 
    CONCAT(berry_size1, "-", berry_size2, "/", berry_size3, "-", berry_size4) AS size, 
    CONCAT(color1, "-", color2) AS color, 
    CONCAT(stem1, "-", stem2, "-", stem3) AS stem_cndt, 
    CONCAT(bunch_count1, "-", bunch_count2, "-", bunch_count3) AS bnch_cnt, 
    CONCAT(shatter1, "-", shatter2) AS shatter, 
    CONCAT(splits1, "-", splits2) AS split, 
    CONCAT(decay_count1, "-", decay_count2) AS decay, 
    CONCAT(wet_sticky1, "-", wet_sticky2) AS wet_sticky, 
    overall_quality AS quality, 
    CONCAT(sugar_brix1, "-", sugar_brix2) brix, 
    overall_condition AS condition, 
    rating, 
    inspector AS insp, 
    comments 
FROM `lot`

# 1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом со словом «case, разнообразие, стиль, лот AS Grower_lot, дата AS pack_date», в строке 3

.на работу

SELECT
        shipper, 
        po, 
        commodity as comm, 
        count, 
        size, 
        label, 
        variety, 
        pack_date AS date, 
        grower_lot AS lot, 
        CONCAT(color1, "-", color2) AS color, 
        CONCAT(sizing1, "-", sizing2, " / ", "sizing3", "-", sizing4 ) AS size, 
        CONCAT(firmness1, "-", firmness2) AS firmness, 
        CONCAT(scars_count1, "-", scars_count2) AS scars, 
        CONCAT(bruise_count2, "-", bruise_count2) AS bruise, 
        CONCAT(decay_count1, "-", decay_count2) AS decay_cnt, 
        CONCAT(sugar_brix1, "-", sugar_brix2) brix, 
        rating, 
        inspector AS insp, 
        comments
FROM `berries`

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Не проблема с CONCAT как таковая, но case является зарезервированным словом в MySQL и требует экранирования от обратной черты.

1 голос
/ 01 марта 2012

case - зарезервированное слово MySQL. Вы должны поместить его в кавычки, если хотите использовать его как псевдоним столбца.

Полный список зарезервированных слов доступен здесь: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

...