>  기사  >  데이터 베이스  >  MySQL의 Order By 다중 필드 정렬 규칙에 대한 자세한 설명

MySQL의 Order By 다중 필드 정렬 규칙에 대한 자세한 설명

小云云
小云云원래의
2017-12-14 11:54:254262검색

정렬에 사용되는 mysql 순서 기준 규칙을 알고 싶으십니까? 이 글은 주로 MySQL의 Order By 다중 필드 정렬 규칙에 대한 코드 예제를 소개합니다. 편집자는 이 내용이 꽤 좋다고 생각합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

단일 필드별 MySql 정렬

다음과 같이 테스트 테이블을 만듭니다.


CREATE TABLE `a` ( 
 `code` varchar(255) DEFAULT NULL, 
 `name` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT into a values('中一', '我'); 
INSERT into a values('中二', '你'); 
INSERT into a values('高一', '我是'); 
INSERT into a values('高二', '我们'); 
INSERT into a values('高二', '我的');

테스트 문은 다음과 같습니다.


-- hex(): 获取16进制字节码 
select name, hex(name) from a order by name desc

결과는 다음과 같습니다:

name hex(이름)
my E68891E79A84
나는 E68891E698AF
us E68891E4 BBAC
me E68891
you E4BDA0

분명히 MySQL의 정렬은 바이트코드를 기반으로 합니다. 첫 번째 단어가 동일하면 두 번째 단어의 바이트코드를 비교하는 식입니다.

MySql은 다중 필드순으로 정렬됩니다.

비교를 통해서만 아이디어를 얻을 수 있고 비교를 통해서만 발전할 수 있습니다. 따라서 먼저 단일 필드의 내림차순 정렬 결과를 나열한 다음 두 필드의 내림차순 정렬 결과를 보고 분석할 수 있습니다. 말이 되네요.



-- 按照name进行降序排序 
select * from a order by name desc; 
-- 按照code进行降序排序 
select * from a order by code desc;

왼쪽이 이름순 desc, 오른쪽이 코드순 desc

codename고등학교 2학년My 고등학교 1학년나는 2학년우리둘째I둘째너
code이름 고등학교 2학년us 고등학교 2학년My고등학교 1학년나는2학년 너두 번째I
결과는 뻔합니다. 단일 필드는 언제 정렬하고, 다른 필드는 나타나는 순서가 자연 순서입니다.


다중 필드 정렬을 살펴보겠습니다


-- 按照code, name进行降序排序 
select * from a order by code, name desc;

codenameSecond OneISecond Two너 1학년 저는 sophomore my sophomore we
입니다. 우선 qq_27837327님과 MjayTang님에게 감사드립니다. 원본 기사에는 이런 말이 있었는데 SQL 정렬이 잘못되었습니다. 실제로, order by code, name desc는 order by code asc, name desc


와 동일합니다. 테스트 결과, order by code 및 name desc에서 select *의 정렬 효과가 여전히 유효하지 않은 것으로 나타났습니다.


우리는 다음 문장을 보고 있습니다


-- 按照code, name进行降序排序 
select * from a order by code desc, name desc; 
-- 该语句的效果等同于下面的语句, 其中1、2分别对应的是code、name 
select code, name from a order by 1 desc, 2 desc;

codenamesophomoremysophomoreus 고등학교 1학년 I am Second 2YouSecond 1Me
​​
코드와 이름의 단일 필드를 내림차순으로 비교하면 order by code desc, name desc를 사용할 때 알 수 있습니다. , MySQL은 먼저 코드를 기준으로 내림차순으로 정렬한 다음 코드를 기준으로 이름을 기준으로 내림차순으로 정렬합니다.


또한 conta 함수를 사용하여 여러 필드를 연결하고 정렬할 수도 있습니다. 하지만 필드가 null일 수 없는지 확인하세요. SQL 문과 concat 결과를 살펴보겠습니다.


select * from a order by concat(code,name) desc

codename2학년my2학년우리1학년 고등학교나는둘째 2 youSecond OneI
분명히 이 테스트 예에서 order by concat(code, name) desc의 효과는 order by code desc, name desc

와 동일합니다. :

MySQL 명령문별 정렬 최적화 코드 상세 설명

mysql에서 in으로 정렬하는 문자 순서(권장)

MySQL Order by 사용 공유

위 내용은 MySQL의 Order By 다중 필드 정렬 규칙에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.