Home >Database >Mysql Tutorial >MySQL's little-known sorting method
<img src="https://img.php.cn/upload/article/202102/09/2021020910000799574.jpg" alt="MySQL's little-known sorting method" >
##Free learning recommendation: mysql video tutorial
ORDER BY field name ascending/descending order, I believe friends who come in know this sorting statement, but when encountering some special sorting, using field names alone cannot meet the needs. Here is what you need Introducing several sorting methods I have encountered:
1. Preparation work
For better demonstration and understanding, first prepare a student table, add numbers, Insert several pieces of data into the three fields of name and grades, as shown in the figure:2. Conditional sorting
Requirement 1: Grades from high to Sorting by low can be done by the aunties selling vegetables on the street. You can easily useORDER BY examScore DESC (as shown on the left below).
ORDER BY IF(examScore IS NULL,101,examScore ) DESC can also be easily implemented (as shown on the right below).
Requirements one | Requirements two | |
---|---|---|
ORDER BY examScore DESC | ORDER BY IF(examScore IS NULL,101,examScore) DESC | |
3. Custom sorting
Customers are like God, and it is not uncommon for them to have fancy demands. For example, students are required to be ranked first, and other students are required to be ranked first according to their grades. Sort from high to low. In this case, you need to use custom sorting. MySQL's own FIELD function (returns the index of the corresponding string) can help you achieve this.Statement 1:The above statement results are We have arranged Zhang San and Li Si at the end (as shown on the left below). It is logical that we should arrange Zhang San and Li Si at the front and sort them in descending order.ORDER BY FIELD(studentName,'Zhang San','Li Si') ASC, examScore DESC;
Statement 2:The result is exactly what you want (as follows) right picture).ORDER BY FIELD(studentName,'李思','张三') DESC, examScore DESC;
Statement one | Statement two | |
---|---|---|
ORDER BY FIND_IN_SET(studentName,'李思,张三') DESC, examScore DESC;##4. Sort by the first letter of Chinese pinyin
Some friends are surprised that sorting Chinese characters directly uses the ordinary
ORDER BY field ASC and it is done easily. Why is it so little known? In fact, when users create table fields using the GBK character set, they can directly use the
ORDER BY field ASC
to solve the problem. Some users use the utf8 character set to prevent garbled characters, and simple sorting statements are useless ( As shown in the left picture below), it is OK to convert the field to GBK when sorting (as shown in the right picture below).
ORDER BY studentName ASC | ORDER BY CONVERT(studentName USING GBK) ASC | |
---|---|---|
MySQL remote connection error 1130 solution
mysql database(Video)
The above is the detailed content of MySQL's little-known sorting method. For more information, please follow other related articles on the PHP Chinese website!