เรียงลำดับและจำกัดผลลัพธ์
เมื่อดึงข้อมูลออกมา เรามักต้องเรียงลำดับ เช่น ยอดขายสูงสุดล่าสุด หรือลูกค้าที่สมัครใหม่ที่สุด
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
- ดึง order ล่าสุด 20 รายการ
- ดึง order ยอดสูงสุด 5 รายการ
- เรียงตาม
customer_idและorder_date - ดึงรายการลำดับที่ 11-20 เมื่อเรียงตาม
order_id