У меня создалось впечатление, что в MySQL GROUP BY поддерживала использование имен столбцов или псевдонимов столбцов.Имя столбца GROUP BY и псевдоним столбца
У меня есть довольно простой SQL, который выполняет кросс-соединение между 2-мя таблицами, а затем левое соединение, чтобы получить некоторые сопоставимые данные (если он существует) и конкатенация соответствующих данных. Это давало странные результаты. Наконец понял, что проблема заключается в том, что я использую имена псевдонимов, а не фактические имена столбцов.
С именами псевдонимов, похоже, они обрабатывали строки строк с несогласованной строкой слева. Следовательно, получение двух строк, возвращаемых группой, несмотря на то, что они имеют одинаковые поля GROUP BY.
В 2 запросы, во-первых, группировка по псевдониму столбца: -
SELECT a.id AS item_id, a.code AS item_code, GROUP_CONCAT(CONCAT_WS(":", c.name, IFNULL(d.value, "void"))
ORDER BY c.name) AS AllAnaly
FROM item a
CROSS JOIN item_analy c
LEFT OUTER JOIN item_analy_value d ON a.id = d.item_id
AND c.id = d.analy_id
GROUP BY item_id, item_code;
и группировка по именам столбцов
SELECT a.id AS item_id, a.code AS item_code, GROUP_CONCAT(CONCAT_WS(":", c.name, IFNULL(d.value, "void"))
ORDER BY c.name) AS AllAnaly
FROM item a
CROSS JOIN item_analy c
LEFT OUTER JOIN item_analy_value d ON a.id = d.item_id
AND c.id = d.analy_id
GROUP BY a.id, a.code;
Я залетела в SQL скрипку, который демонстрирует это: -
http://sqlfiddle.com/#!2/35a69
Мне не хватает чего-то с тем, как MyS QL обрабатывает псевдоним 'в предложениях GROUP BY?
Группа не работает над псевдонимом любой колонки !! Подробнее ans: http://stackoverflow.com/questions/3841295/sql-using-alias-in-group-by – Jain
@Jain - MySQL - один из тех, где это должно работать - https://dev.mysql.com/ doc/refman/5.0/en/problems-with-alias.html – Kickstart