Tìm hiểu cách sử dụng Mệnh đề ORDER BY của MySQL với sự trợ giúp của các ví dụ lập trình trong hướng dẫn thực hành này
MySQL ORDER BY là một lệnh hoặc mệnh đề thường được sử dụng cùng với Truy vấn CHỌN, để SẮP XẾP tập kết quả trả về theo thứ tự tăng dần hoặc giảm dần
Lệnh này được triển khai rộng rãi và rất hữu ích vì nó có thể được sử dụng cùng với các tùy chọn khác như GIỚI HẠN và THAM GIA, v.v. để giảm hơn nữa tập kết quả và trả về kết quả cần thiết
Hơn nữa, có thể có nhiều mệnh đề ORDER BY được sử dụng trong cùng một bảng và các thứ tự sắp xếp khác nhau có thể được áp dụng cho từng mệnh đề đó.
=> Kiểm tra tất cả các hướng dẫn về MySQL tại đây
Bạn sẽ học được gì
- ĐẶT HÀNG MySQL THEO Mệnh đề
- Dữ liệu thử nghiệm
- cú pháp
- ĐẶT HÀNG MySQL THEO Ví dụ
- #1] ĐẶT HÀNG BẰNG
- #2] CÓ GIỚI HẠN
- #3] Với THAM GIA
- #4] ĐẶT HÀNG THEO Với Nhiều Cột
- #5] ĐẶT HÀNG MySQL THEO RAND[]
- Các câu hỏi thường gặp
- Sự kết luận
- đề xuất đọc
ĐẶT HÀNG MySQL THEO Mệnh đề
Dữ liệu thử nghiệm
-- table creation - employee_department CREATE TABLE employee_department[dept_id SMALLINT[5] NOT NULL AUTO_INCREMENT PRIMARY KEY, dept_name VARCHAR[100]]; -- table creation - employees CREATE TABLE employees [emp_id SMALLINT[5] NOT NULL AUTO_INCREMENT PRIMARY KEY, emp_name VARCHAR[150] DEFAULT NULL, dept_id SMALLINT, CONSTRAINT deptIdFk FOREIGN KEY[dept_id] REFERENCES employee_department[dept_id] ON UPDATE CASCADE ON DELETE CASCADE]; -- data insertion employee_department INSERT INTO employee_department[dept_name] VALUES ["HR"],["ENGINEERING"],["SALES"],["MARKETING"]; -- data insertion employees INSERT INTO employees[emp_name, dept_id] VALUES ["Damian Kim",1],["Tara Vargas",2],["Marlon Jenning",4],["Leopold Schuman",2],["Bailey Sutton",3],["Toby Roffe",4],["Troy Duncan", 1],["Polly Berry",2],["Dorian Maillin", 2],["Thora Mason",3],["Taylor Morales",4],["Ida Carr",2],["Prateek Pal",2],["Janya Sood",4],["Tara Shetty",2],["Padma Krishna",1];
cú pháp
SELECT {column list} FROM {tableName} ORDER BY {column1 ASC|DESC}, {column2 ASC|DESC}, ...
Hãy hiểu các phần khác nhau của cú pháp
- {column-list}. Đề cập đến các cột bắt buộc trong tập hợp kết quả
- {tên-bảng}. Là bảng đang được truy vấn
- {cột1 ASC. DESC}. Tên cột mà tập kết quả cần được sắp xếp. ASC đề cập đến Sắp xếp TĂNG CƯỜNG và DESC đề cập đến Sắp xếp Giảm dần
- Chúng ta có thể chỉ định nhiều cột cho mệnh đề ORDER BY và chỉ định các thứ tự sắp xếp khác nhau theo yêu cầu
Ghi chú
Theo mặc định, thứ tự sắp xếp cho MySQL ORDER BY là ASCENDING
MySQL ORDER BY sử dụng các chỉ mục cột hiện có nếu có cho các cột được đề cập trong mệnh đề ORDER BY
ĐẶT HÀNG MySQL THEO Ví dụ
#1] ĐẶT HÀNG BẰNG
SELECT * FROM employees ORDER BY emp_name;
Ở đây, bạn có thể thấy rằng chúng tôi đang sắp xếp theo emp_name. Ngoài ra, vì chúng tôi chưa chỉ định bất kỳ thứ tự sắp xếp nào, thứ tự sắp xếp mặc định do công cụ MySQL đảm nhận là thứ tự TĂNG CƯỜNG. Chúng ta có thể nhận thấy trong tập kết quả rằng các bản ghi được sắp xếp theo thứ tự tăng dần của tên nhân viên
Hãy thử chạy cái này cho thứ tự DESCENDING
SELECT * FROM employees ORDER BY emp_name DESC;
Chúng ta có thể sử dụng cùng một truy vấn và chỉ đề cập đến thứ tự sắp xếp là DESC
Đây là kết quả với tên nhân viên được sắp xếp theo thứ tự giảm dần
#2] CÓ GIỚI HẠN
Bây giờ hãy xem cách chúng ta có thể sử dụng mệnh đề ORDER BY với tùy chọn LIMIT để giới hạn số lượng kết quả tìm kiếm được trả về
Chúng tôi sẽ sử dụng cùng một truy vấn để sắp xếp theo tên nhân viên tăng dần và tìm nạp 5 bản ghi đầu tiên
SELECT * FROM employees ORDER BY emp_name LIMIT 5;
Trong trường hợp này, Công cụ MySQL sẽ sắp xếp bảng theo thứ tự sắp xếp và trả về 5 bản ghi đầu tiên như được đề cập trong mệnh đề LIMIT
#3] Với THAM GIA
Hãy xem một ví dụ về cách sử dụng ORDER BY cùng với THAM GIA
SELECT emp.emp_name, emp_dept.dept_name FROM employees emp INNER JOIN employee_department emp_dept ON emp.dept_id = emp_dept.dept_id ORDER BY emp.emp_name ASC
#4] ĐẶT HÀNG THEO Với Nhiều Cột
Hãy xem một ví dụ về việc sử dụng nhiều cột với mệnh đề ORDER BY và xem cách sắp xếp được áp dụng
Chúng tôi sẽ sử dụng truy vấn trước đó với cột bổ sung dept_name được sắp xếp theo thứ tự ASCENDING và tên trong mỗi bộ phận được sắp xếp theo thứ tự DESCENDING
SELECT .emp_name, emp_dept.dept_name FROM employees emp INNER JOIN employee_department emp_dept ON emp.dept_id = emp_dept.dept_id ORDER BY empemp_dept.dept_name ASC, emp.emp_name DESC
Trong đầu ra ở trên, bạn có thể thấy rằng các hàng được sắp xếp theo thứ tự TĂNG CƯỜNG của tên bộ phận. Tên nhân viên trong các phòng ban được sắp xếp theo thứ tự GIẢM
Ví dụ. Tham khảo bộ phận nhân sự – các tên xuất hiện theo thứ tự TROY, PADMA và DAMIAN – đó là thứ tự CHỮA GIẢM MỨC cho cột emp_names
#5] ĐẶT HÀNG MySQL THEO RAND[]
MySQL ORDER BY có thể được sử dụng với tùy chọn RAND[] để lấy các bản ghi ngẫu nhiên từ bảng
Tùy chọn này không yêu cầu tên cột sau mệnh đề ORDER BY và thường được sử dụng cùng với câu lệnh LIMIT để trả về số hàng đã cho
Ví dụ. Giả sử bạn muốn tìm nạp 2 bản ghi ngẫu nhiên từ bảng nhân viên, thì bạn có thể thực hiện truy vấn bên dưới.
SELECT * FROM employees ORDER BY RAND[] LIMIT 2
Mỗi khi bạn chạy truy vấn trên, bạn sẽ nhận được các kết quả ngẫu nhiên khác nhau
Ví dụ: chạy truy vấn 2 lần, trả về tập kết quả như bên dưới.
Các ứng dụng điển hình của việc sử dụng ORDER BY RAND[] có thể là
- Tìm nạp các bản ghi ngẫu nhiên để hiểu lược đồ cột và loại dữ liệu mà bảng chứa
- Các ứng dụng cụ thể như rút thăm may mắn từ một bảng có 1 triệu bản ghi – tìm nạp 3 hàng ngẫu nhiên
Các câu hỏi thường gặp
Q #1] Làm cách nào để sắp xếp trong MySQL?
Câu trả lời. MySQL cung cấp chức năng sắp xếp bằng mệnh đề ORDER BY. Thứ tự sắp xếp mặc định là Tăng dần [hoặc chúng ta có thể đề cập rõ ràng ASC cho tăng dần để làm cho các truy vấn có thể đọc được] và để sắp xếp Giảm dần, có thể sử dụng từ khóa DESC
Hãy xem các truy vấn đơn giản để sắp xếp dữ liệu
Chúng ta có thể sử dụng truy vấn bên dưới để tìm nạp 10 bản ghi đầu tiên được sắp xếp theo thứ tự giảm dần theo độ tuổi từ một bảng có tên nhân viên có một cột có tên emp_age
________số 8Q #2] ORDER BY làm gì trong MySQL?
Câu trả lời. ORDER BY là một mệnh đề thường được sử dụng cùng với các truy vấn SELECT trong MySQL và được sử dụng để trả về tập kết quả được sắp xếp theo thứ tự nhất định đối với cột hoặc trường đã cho trong bảng
Mệnh đề ORDER BY có thể được sử dụng cùng với các tùy chọn khác nhau như
- Với mệnh đề GIỚI HẠN
- Với các bảng đã tham gia
- Với GROUP BY, v.v.
Q #3] Việc sử dụng MySQL ORDER BY RAND[] là gì?
Câu trả lời. ORDER BY RAND[] là một mệnh đề đặc biệt có thể được sử dụng để trả về các bản ghi ngẫu nhiên từ một bảng nhất định. Nó thường được sử dụng cùng với mệnh đề LIMIT để chỉ định số lượng hàng cần được trả về
Một truy vấn mẫu dưới đây
SELECT * FROM employees ORDER BY RAND[] LIMIT 4
Truy vấn trên sẽ trả về 4 bản ghi ngẫu nhiên từ bảng của nhân viên
Sự kết luận
Trong hướng dẫn này, chúng ta đã tìm hiểu về mệnh đề ORDER BY của MySQL và các tùy chọn khác nhau mà mệnh đề này có thể được sử dụng
Chúng ta cũng đã thảo luận về MySQL ORDER BY RAND[] thường được sử dụng để trả về các bản ghi ngẫu nhiên từ một bảng nhất định so với số lượng bản ghi được chỉ định bởi điều kiện LIMIT
Mệnh đề ORDER BY là một tùy chọn được sử dụng rộng rãi trong các truy vấn phức tạp và ứng dụng web để truy xuất và hiển thị dữ liệu theo thứ tự mong muốn