Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เรียงลำดับข้อมูลใน MySQL ตามผลลัพธ์ Modulus (Modulo) ของคอลัมน์

การเรียงลำดับด้วยผลหารคงเหลือ (Modulus) ใน ORDER BY

เราสามารถใช้ตัวดำเนินการ Modulus (%) ในคำสั่ง ORDER BY เพื่อเรียงลำดับแถวตามเศษจากการหารคอลัมน์ตัวเลข

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    StudentId INT,
    StudentName VARCHAR(100)
);
Query OK, 0 rows affected (1.88 sec)

mysql> INSERT INTO DemoTable VALUES(100,'Chris');
mysql> INSERT INTO DemoTable VALUES(101,'Robert');
mysql> INSERT INTO DemoTable VALUES(102,'David');
mysql> INSERT INTO DemoTable VALUES(103,'Mike');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 100       | Chris       |
| 101       | Robert      |
| 102       | David       |
| 103       | Mike        |
+-----------+-------------+
4 rows in set (0.00 sec)

คำสั่งเรียงตาม StudentId % 2 แล้วตาม StudentId % 3

mysql> SELECT StudentId, StudentName, StudentId % 2, StudentId % 3
    FROM DemoTable ORDER BY StudentId % 2, StudentId % 3;

ผลลัพธ์:

+-----------+-------------+---------------+---------------+
| StudentId | StudentName | StudentId % 2 | StudentId % 3 |
+-----------+-------------+---------------+---------------+
| 102       | David       | 0             | 0             |
| 100       | Chris       | 0             | 1             |
| 103       | Mike        | 1             | 1             |
| 101       | Robert      | 1             | 2             |
+-----------+-------------+---------------+---------------+
4 rows in set (0.00 sec)

คำอธิบาย

  • StudentId % 2 : เศษจากการหาร 2 (คู่=0, คี่=1) → เรียงคู่ก่อน คี่ทีหลัง
  • StudentId % 3 : เศษจากการหาร 3 (0,1,2) → ใช้สำหรับเรียงย่อยภายในกลุ่มคู่/คี่
  • 102: %2=0, %3=0 → อันดับ 1
  • 100: %2=0, %3=1 → อันดับ 2
  • 103: %2=1, %3=1 → อันดับ 3
  • 101: %2=1, %3=2 → อันดับ 4
  • เทคนิคนี้ใช้ได้กับการจัดกลุ่มข้อมูลแบบ Cyclic หรือ Round-robin