Счетчик Mysql возвращает значение null вместо 0

#mysql

#mysql

Вопрос:

Запрос возвращает значение null, если строк нет, вместо возврата 0. Я пробовал использовать COALESCE и IFNULL , но, похоже, ничего не работает.

 WITH USER  AS (SELECT id,  Json_object('name', u.NAME, 'photo_url', u.photo_url) AS USER  FROM users u  WHERE id = :userId),  cmt  AS (SELECT post_id,  COALESCE(Count(pc.id), 0) AS totalComments  FROM post_comments pc  GROUP BY post_id) SELECT p.id,  p.text,  p.created_at,  p.likes,  u.USER,  cmt.totalcomments FROM posts p  INNER JOIN USER u  ON u.id = p.user_id  LEFT JOIN cmt  ON cmt.post_id = p.id ORDER BY p.id DESC   

Комментарии:

1. Функция COUNT() никогда не возвращает значение NULL, поэтому вам даже не нужно ОБЪЕДИНЯТЬСЯ(). То, что вы видите как NULL в результатах, является значением totalComments из строки cmt , которая не соответствует условиям в предложении ON ЛЕВОГО соединения. Используйте COALESCE() для cmt.totalcomments

2. Используйте COALESCE(cmt.totalcomments, 0) и удалите COALESCE с вашего COUNT

3. Я сейчас попробовал, он не возвращает 0, но имя таблицы становится таким COALESCE(cmt.totalComments, 0): 0 вместо totalComments: 0

4. если вам действительно нужно конкретное имя столбца (зачем?), используйте COALESCE(cmt.totalcomments, 0) as totalcomments

5. Вау, это было решение, ура, приятель