2012-03-05 2 views
1

Я использую следующий SQL-запрос:Группа By сортирует результаты, которые я не хочу ...?

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

Добавить явный ORDER BY. Функция, которая может быть полезной является FIELD():

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

Благодаря ypercube, его прекрасно работает, как нужно ... :) – PhpStudent

2

Вы должны использовать 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) 
Смежные вопросы