2014-09-09 3 views
0

는 내가 원하는 것은 online_friends ASC 또는 DESC 중 하나에 내 결과 테이블 기지를 정렬하는 것입니다MySQL의 순서가

SELECT friends.id, sum(if(friends.online =1,1,0)) AS online_friends, ...,... 
FROM some_table 
GROUP BY id 
ORDER BY sum(if(friends.online =1,1,0)) ASC; 

나는 다음과 MySQL의 쿼리가 있다고 가정하자 내 쿼리 작동하지 않는 문제가이 쿼리이다 online_friends로 그들을 분류하지 않습니다.

누구든지 내 검색어를 수정 해 줄 수 있습니까?

SELECT friends.id, groups, sum(friends.online) AS online_friends 
FROM some_table 
where friends.online = 1 
GROUP BY friends.id, groups 
ORDER BY friends.online ASC; 

내가 온라인과 오프라인이 있다고 가정 :

결과
id  group   online_friends 
--  -------  ---------------- 
1  west    5 
2  east    3 
3  north    7 
4  south    2 

나는 당신이 시도 할 수

+1

'some_table'에서 쿼리했지만 열은'friends.id'와 같이 한정됩니다. 네가 우리에게 말하지 않은이 쿼리에 대해 뭔가있는 것 같아. –

+0

방금 ​​쿼리를 만들었습니다. 이해가되지 않을 수 있습니다. 내가 기본적으로 원하는 것은 online_friends의 결과를 기준으로 정렬하는 것입니다. 아쉽게도 결과 테이블을 만들어 더 잘 보여줍니다. – user3768541

답변

0

조회에서 작동합니다 : 그러나

SELECT friends.id, sum(if(friends.online =1,1,0)) AS online_friends, ...,... 
FROM friends 
GROUP BY id 
ORDER BY sum(if(friends.online =1,1,0)) ASC; 

, 나는 그것을 작성합니다

SELECT friends.id, sum(friends.online = 1) AS online_friends, ...,... 
FROM friends 
GROUP BY id 
ORDER BY sum(friends.online = 1) ASC; 

당신은 또한 변경할 수 있습니다 order by에 :

ORDER BY online_friends 

당신이 찾아내는 경우 그래도 작동하지 않는다면 SQL Fiddle을 설정하여 현재 상황을 볼 수 있습니다.

+0

당신의 권리, 그것은 작동해야합니다. 하지만 어쨌든 그것은 내 저장 프로 시저에서 작동하지 않습니다. 내 처치에 문제가있을거야. – user3768541

0

online_friends에 따라 결과를 정렬 할의 예입니다 값은 각각 1과 0입니다.

+0

order by 절을 저장 프로 시저의 매개 변수로 전달하고 있습니다. 주문 조항에서 할 수있는 방법이 있습니까? – user3768541

+0

@ user3768541 : - 질문을 올바르게 받았는지 모르지만 order by 절을 입력 매개 변수로 전달하는 방법은 무엇입니까? 나는 그것이 가능하거나 오히려 좋은 접근 방법으로 진행될 것이라고 생각하지 않는다. –