Причина, по которой отдельный столбец, использующий агрегатную функцию , работает, в то время как версия со столбцами, не использующими агрегатные функции, не работает, заключается в том, что вам нужно указать предложение GROUP BY
. Вот как должен выглядеть ваш запрос:
SELECT COUNT(n.nid),
n.nid,
ctu.field_update_date_value
FROM NODE n
LEFT JOIN CONTENT_TYPE_UPDATE ctu ON ctu.vid = n.vid
WHERE n.type IN ('update')
GROUP BY n.nid, ctu.field_update_date_value
ORDER BY field_update_date_value DESC
Я изменил псевдонимы таблиц на более короткие - их легче читать. Вот мясо вашего вопроса:
SELECT n.nid,
COUNT(n.fake_example_column),
ctu.field_update_date_value
...
GROUP BY n.nid, ctu.field_update_date_value
Я изменил пример для использования поддельного столбца, чтобы выделить способ определения GROUP BY. Любой столбец, на который вы ссылаетесь без включения в агрегатную функцию , должен быть упомянутым в GROUP BY
. Я говорю должен , потому что MySQL - это единственная база данных, о которой я знаю, которая поддерживает GROUP BY
, где вы можете выборочно опускать столбцы - существует множество SO вопросов о том, почему запросы работают на MySQL но не может быть перенесен без изменения на другие базы данных. Очевидно, в вашем случае вам все еще нужно определить хотя бы один.