2014-01-07 15 views
-1

왼쪽 및 오른쪽 신발이 섞여있는 테이블이 있습니다. 그 중 일부는 방수 기능이 있습니다.이 MySQL 테이블을 올바르게 시퀀싱 할 수 있습니까?

알파벳순으로 정렬하려면 쿼리를 작성해야하지만 이름이 같은 경우에는 왼쪽/오른쪽의 방수 열을 사용하십시오.

+-------------------------+------------+------------+ 
| Shoe name    | Waterproof | Left/Right | 
+-------------------------+------------+------------+ 
| boot     |  0  | left  | 
| sandal     |  0  | left  | 
| shoe     |  1  | left  | 
| boot     |  1  | left  | 
| boot     |  0  | right | 
| boot     |  1  | right | 
| sandal     |  0  | right | 
| shoe     |  1  | right | 
+-------------------------+------------+------------+ 

이 이

이 그것을 할 수

+-------------------------+------------+------------+ 
| Shoe name    | Waterproof | Left/Right | 
+-------------------------+------------+------------+ 
| boot     |  0  | left  | 
| boot     |  0  | right | 
| boot     |  1  | left  | 
| boot     |  1  | right | 
| sandal     |  0  | left  | 
| sandal     |  0  | right | 
| shoe     |  1  | left  | 
| shoe     |  1  | right | 
+-------------------------+------------+------------+ 
... 같은 분류해야 하는가?

+3

는 자신의 열을 왜 방치 오른쪽하지? – Fallenreaper

+0

수 있습니다. 도움이 될까요? – Urbycoz

+0

피트를 나타내는 비트 (1 또는 0)와 추가 7-8 문자를 저장합니다. – Fallenreaper

답변

1

샌들이 방수가 아닌 경우 어떻게해야합니까? 수정 된 데이터 구조에

, 다음과 같은 작업을해야합니다 :

SELECT `Shoe name`, `Waterproof`, `Left/Right` 
FROM shoe_table 
    ORDER BY CONCAT(`Shoe name`, ', ', `Waterproof`), `Left/Right`; 

당신은 시도 할 수 있습니다 :

select * from shoes order by 2, 1; 

또는 열 이름 :

select * from shoes order by Waterproof, `Shoe name`; 
+0

음 ... 그래. 이 예제에서 작동합니다. 샌들이 방수가되지 않았다면 어떨까요? 사실, 나는 바꾸어서 그들이 그렇지 못하게 할 것이다. 그것은 지점을 명확하게합니다. – Urbycoz

0

이 시도 :

ORDER BY ShoeName,Waterproof 
+0

그게 작동하지 않을 것입니다. 방수 기능이없는 왼쪽 부팅 전에 방수 기능이없는 왼쪽 부팅이 있어야합니다. – Urbycoz

0

이 필요 shoes 열을 구문 분석. 가장 쉬운 방법은 substring_index()을 사용하고 있습니다 :

order by substring_index(ShoeName, '(', 1), Waterproof, ShowName