2016-07-21 4 views
0

사용자 및 그룹의 관심사와 일치하는 함수를 작성하고 있습니다. 내 쿼리의 결과를 바탕으로 일치 항목을 얻을 수 있지만 결과가 가장 많은 group_id를 기준으로 내림차순으로 결과를 정렬하는 데 도움이 필요합니다.MySQL 쿼리는 대부분의 결과/일치 항목을 내림차순으로 정렬합니다.

예를 들어 아래의 결과 집합을 기준으로 정렬하고 싶습니다 ... group_id 47은 4 개의 결과가 있고 group_id 44와 group_id 48이 2 개의 결과와 1이있는 그룹으로 구성됩니다 group_id 40, 42, 43 및 49와 같은 결과가 맨 아래에 표시됩니다.

다음은 샘플 쿼리입니다.

SELECT * FROM `group_questionnaire_answers` 
WHERE (question_id = 1 AND answer =3) 
OR (question_id = 2 AND answer =1) 
OR (question_id = 3 AND answer =4) 
OR (question_id = 4 AND answer =4) 
OR (question_id = 5 AND answer =4) 
OR (question_id = 6 AND answer =3) 
OR (question_id = 7 AND answer =3) 
OR (question_id = 8 AND answer =4) 
OR (question_id = 9 AND answer =5) 
OR (question_id = 10 AND answer =2) 

다음은 샘플 결과 집합입니다.

enter image description here

나는 당신의 도움을 주셔서 감사합니다. 감사.

+2

편집 및 결과를 얻기 위해 사용하는 쿼리를 포함하십시오. –

+0

질문을 편집했습니다. – aabejero

답변

1

그것은 당신이 원하는 방법에 따라 달라집니다 :

SELECT group_id, count(*) AS num 
FROM group_questionnaire_answers 
WHERE ... 
GROUP BY 1 ORDER BY 2 DESC 

모든 세부 사항을 표시하려는 경우, 당신은 다음 조인 자체를 사용해야합니다 :

SELECT a.* 
FROM group_questionnaire_answers AS a 
JOIN (
    SELECT group_id, count(*) AS num 
    FROM group_questionnaire_answers 
    WHERE ... 
    GROUP BY 1 
) AS b ON a.group_id = b.group_id 
WHERE ... 
ORDER BY b.num DESC 

... === 귀하의 orignal SQL 어디

+0

에게 완벽한 첫 번째 검색어를 제공해 주셔서 감사합니다. 쿼리는 동시에 다른 기능을 수행했습니다. 훌륭한. 고맙습니다. – aabejero

+0

안녕하세요, SIDU, "GROUP BY 1 ORDER BY 2 DESC"의 의미를 나에게 설명해 주시겠습니까? :) – aabejero

+1

GROUP BY 1 ORDER BY 2 DESC ==는 == GROUP BY group_id ORDER BY count (*)에 대한 속기입니다. DESC – SIDU

관련 문제