Logo

04 เรียงลำดับและจำกัดผลลัพธ์

เรียงลำดับและจำกัดผลลัพธ์

เมื่อดึงข้อมูลออกมา เรามักต้องเรียงลำดับ เช่น ยอดขายสูงสุดล่าสุด หรือลูกค้าที่สมัครใหม่ที่สุด

ORDER BY

SELECT *
FROM orders
ORDER BY amount;

ค่าเริ่มต้นคือเรียงจากน้อยไปมาก หรือ ASC

SELECT *
FROM orders
ORDER BY amount ASC;

เรียงจากมากไปน้อยด้วย DESC

SELECT *
FROM orders
ORDER BY amount DESC;

เรียงหลาย column

SELECT *
FROM orders
ORDER BY order_date DESC, amount DESC;

คำสั่งนี้จะเรียงวันที่ใหม่ก่อน ถ้าวันเดียวกันจะเรียงยอดสูงก่อน

LIMIT

SELECT *
FROM orders
ORDER BY amount DESC
LIMIT 10;

ใช้ดู top 10 order ที่ยอดสูงสุด

OFFSET

SELECT *
FROM orders
ORDER BY order_id
LIMIT 10 OFFSET 10;

ใช้ข้าม row บางส่วน มักเจอใน pagination

NULL ในการเรียง

บาง database รองรับ NULLS LAST

SELECT *
FROM customers
ORDER BY last_login_at DESC NULLS LAST;

แบบฝึกหัด

จาก table orders

  1. ดึง order ล่าสุด 20 รายการ
  2. ดึง order ยอดสูงสุด 5 รายการ
  3. เรียงตาม customer_id และ order_date
  4. ดึงรายการลำดับที่ 11-20 เมื่อเรียงตาม order_id