Group By сортирует наборы результатов, которые мне не нужны ...? - PullRequest
1 голос
/ 05 марта 2012

Я использую следующий SQL-запрос:

SELECT `comment`.`id` AS `comment_id` , count( `comment_likes`.`comment_id` ) AS `number_of_likes`
FROM `comment`
LEFT JOIN `comment_likes` ON `comment`.`id` = `comment_likes`.`comment_id`
WHERE `comment`.`id`
IN ( 10, 5, 7, 8, 3, 2, 9 )
GROUP BY `comment`.`id`

Здесь результат запроса выглядит так:

comment_id  number_of_likes
2           0
3           1
5           0
7           0
8           0
9           0
10          0

Что мне не нужно ...?Я хочу, чтобы тот же порядок был указан там, где условие: ГДЕ comment. id IN (10, 5, 7, 8, 3, 2, 9) .

Итак, я хочу, чтобы результат был таким:

comment_id  number_of_likes
10          0
5           0
7           0
8           0
3           1
2           0
9           0

Может ли кто-нибудь мне помочь ...?

Заранее спасибо .....

Ответы [ 2 ]

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

Вам необходимо использовать FIELD() MySQL для достижения желаемых результатов

SELECT `comment`.`id` AS `comment_id` , 
        count( `comment_likes`.`comment_id` ) AS `number_of_likes`
FROM `comment` LEFT JOIN `comment_likes` ON 
       `comment`.`id` = `comment_likes`.`comment_id`
WHERE `comment`.`id`
IN ( 10, 5, 7, 8, 3, 2, 9 )
GROUP BY `comment`.`id`
ORDER BY FIELD(comment.id, 10, 5, 7, 8, 3, 2, 9)
1 голос
/ 05 марта 2012

Добавить явное ORDER BY.Полезная функция: FIELD():

ORDER BY FIELD(comment.id, 10, 5, 7, 8, 3, 2, 9)
...