연속적으로 최저 또는 최고로 행을 정렬하려고 시도하거나 오히려 반복적으로 MySql을 사용하여 정렬합니다. 예를 들어 : 열에 다음 값이있는 경우 : 1,3,2,4,2,1,4,3,5 그러면 1,2,3,4,5,1,2와 같이 끝나야합니다. 3,4. 따라서 가장 낮은 것부터 가장 높은 것까지 가면서 가장 낮은 것부터 가장 높은 것까지 여러 번 다시 정렬하려고 시도합니다.MySql은 조건부로 오름차순으로 정렬합니다.
답변
을 다음을 고려, 반차 조인 조작 (딸기의 대답의 방법)는 다루기 결과 집합을 생성 할 수있다. (. 그럼 다시, MySQL은 거기에 몇 가지 최적화를 할 수 있습니다)
MySQL의에서 사용할 수있는 또 다른 방법은 다음과 같이 "사용자 변수"를 사용하는 것입니다
SELECT r.mycol
FROM (SELECT IF([email protected],@seq := @seq + 1,@seq := 1) AS seq
, @prev := q.mycol AS mycol
FROM mytable q
JOIN (SELECT @prev := NULL, @seq := NULL) p
ORDER BY q.mycol
) r
ORDER BY r.seq, r.mycol
날 조금,하고 설명하는 것이 풀어 보자 무엇을 내부 쿼리 (인라인 뷰는 r
으로 앨리어스 (alias) 된 것부터 시작합니다.) 우리는 MySQL에 정렬하고자하는 값을 포함하는 컬럼 (mycol
)을 가져 오도록 말하고 있습니다. 1,3,2,4,2,1,4,3,5 그리고 우리는 이들에게 오름차순으로 순서를 정하도록 MySQL에게 명령합니다 : 1,1,2,2,3,3,4,4,5.
"트릭"은 MySQL 사용자 변수를 사용하므로 현재 행의 mycol
값과 이전 행의 mycol
값을 비교할 수 있으며,이를 사용하여 오름차순 시퀀스 값을 각 개별 값에 1..n.
결과 집합으로, 우리는 MySQL에게 그 할당 된 순서 값을 먼저 순서대로 정렬 한 다음 mycol
의 값으로 정렬하도록 말할 수 있습니다.
각 행에 대한 고유 ID가 존재한다면, 상관 부질
SELECT r.mycol
FROM mytable r
ORDER
BY (SELECT COUNT(1)
FROM mytable q
WHERE q.mycol = r.mycol
AND q.id <= r.id
)
, r.mycol
(이 방법은 큰 세트에도 수행하는 것이 매우 가능성이 있음) 상응하는 결과를 얻기 위해 사용될 수있다
테스트 케이스를위한 설정은 다음과 같습니다.
CREATE TABLE mytable (id INT, mycol INT);
INSERT INTO mytable (id, mycol) VALUES
(1,1),(2,3),(3,2),(4,4),(5,2),(6,1),(7,4),(8,3),(9,5);
게시 해 주셔서 감사합니다. 나는 mysql 사용자 변수로 전략을 사용하여 솔루션을 구현했다. – user1074861
이의는 PK가 고유 한 정수입니다 척하자 어떤 순서로 두 시간이 없다. ... 큰 세트
CREATE TABLE seq(id INT NOT NULL PRIMARY KEY,val INT);
INSERT INTO seq VALUES (8,1),(4,2),(1,3),(2,4),(7,0),(6,1),(3,2),(5,5);
SELECT * FROM seq ORDER BY val;
+----+------+
| id | val |
+----+------+
| 7 | 0 |
| 6 | 1 |
| 8 | 1 |
| 3 | 2 |
| 4 | 2 |
| 1 | 3 |
| 2 | 4 |
| 5 | 5 |
+----+------+
SELECT x.*
, COUNT(*) rank
FROM seq x
JOIN seq y
ON y.val = x.val
AND y.id <= x.id
GROUP
BY id
ORDER
BY rank
, val;
+----+------+------+
| id | val | rank |
+----+------+------+
| 7 | 0 | 1 |
| 6 | 1 | 1 |
| 3 | 2 | 1 |
| 1 | 3 | 1 |
| 2 | 4 | 1 |
| 5 | 5 | 1 |
| 8 | 1 | 2 |
| 4 | 2 | 2 |
+----+------+------+
잘 했어! 이것이 제가 찾고 있던 것입니다. – user1074861
- 1. 2D 배열을 오름차순으로 정렬합니다.
- 2. MySQL은 대부분의 코멘트별로 정렬합니다.
- 3. 개체 배열을 시간순으로 정렬합니다. 가장 늦은 순서에서 오름차순으로 정렬합니다.
- 4. STL을 변수별로 정렬 한 다음 오름차순으로 정렬합니다.
- 5. MySQL은 조건부로 테이블을 생성합니다
- 6. MySQL은 특정 문자로 쿼리를 정렬합니다.
- 7. MySQL은 평균 두 개의 평균으로 정렬합니다.
- 8. 컬럼 1 값의 오름차순으로 고유 행렬 열 값을 정렬합니다.
- 9. PHP mysql은 ORDER BY DESC를 사용하여 행을 정렬합니다.
- 10. PHP/MYSql은 이름, 날짜, 알파 등으로 데이터베이스 항목을 정렬합니다.
- 11. ListView 항목을 오름차순으로 정렬하는 방법?
- 12. 날짜 배열을 오름차순으로 정렬하는 방법
- 13. 새 열을 클릭 할 때마다 jQuery 테이블 정렬 도구를 오름차순으로 정렬합니다.
- 14. 조건부로
- 15. 힙 배열을 오름차순으로 인쇄하십시오.
- 16. 성장률 오름차순으로 정렬
- 17. 더블 배열을 오름차순으로 정렬
- 18. tableViewCell에서 오름차순으로 값 정렬
- 19. 종류의 오름차순으로 파이썬에서 목록
- 20. R 오름차순으로 플롯
- 21. 레코드가 오름차순으로 삽입되지 않음
- 22. 부분적으로 오름차순으로 정렬
- 23. 파일의 이름이 오름차순으로 바뀝니다.
- 24. 날짜를 오름차순으로 형식을 지정
- 25. SMS 메시지를 오름차순으로 정렬
- 26. 인쇄 패킷의 오름차순으로 출력
- 27. Meteor에서 오름차순으로 오름차순 정렬
- 28. 벡터 요소를 오름차순으로 정렬
- 29. 8085를 사용하여 오름차순으로 정렬.
- 30. 데이터 목록을 오름차순으로 정렬하십시오.
정렬이 "시작될 때"의 기초를 결정하는 다른 열이 있습니까? –
PK는 무엇입니까? – Strawberry
@Mike no, 다른 항목이 없습니다. – user1074861