2010-07-07 5 views
1

ORDER BY 또는 일종의 사용자 지정 논리에 대한 정렬 절차를 지정하는 방법이 있습니까? 필요한 것은 열에 정렬되어있는 다른 데이터를 확인하는 것입니다. 예를 들어 한 열의 값이 다른 열의 값보다 높지만 특정 조건이 충족되지 않으면 더 낮은 값으로 정렬됩니다. 지금은 열의 모든 데이터를 가져 와서 PHP에서 usort()를 사용하여 정렬 한 다음 페이지 매기기를 수행합니다. 그러나 이것은 꽤 나쁜 성능입니다. 나는 이것을 MySQL로 옮기고 싶다. 가능한가? 그렇다면 어떻게? : PMySQL - 전문 주문?

미리 감사드립니다.

웹 사이트에있는 문제의 예 here - 기록은 승리 비율로 정렬되지만 게임 1 개를 사용하는 플레이어는 100 %의 승리로 승리합니다. 게임에 대한 기준점을 설정 한 다음 낮은 점수로 분류하고 싶습니다.

+0

일부 DB 스키마를 게시하십시오. 나는 당신이 추가적인 논리를 가지고있는 것처럼 들리므로 FIELD (ORDER BY FIELD())가 여기에서 작동 할 것이라고 생각하지 않는다. –

답변

2

여러 표현으로 주문할 수 있습니다

ORDER BY games_played < 10, wins/losses DESC 

첫 번째 표현은 10 개 게임보다 더 적은 playes있는 모든 플레이어 위에 10 개 이상의 게임을 플레이 한 모든 선수들을 정렬합니다. 두 번째 식은 승패 비율에 따라 정렬됩니다. 두 번째 표현식은 첫 번째 표현식과 동일한 행을 묶는 데에만 사용됩니다. 즉, 10 개의 게임을 한 플레이어는 승패 비율에 관계없이 9 개의 게임을 한 플레이어 위에 항상 나타납니다.

+0

달콤한,이 작품처럼 매력! 그리고 당황하게도 어떤 논리도 필요하지 않았습니다 .. ^^ 대단히 감사합니다! –