مرتب‌سازی و محدود کردن نتیجه

با ORDER BY، LIMIT و OFFSET نتیجه را مرتب و صفحه‌بندی کنی و ترتیب نوشتن بخش‌های یک پرس‌وجو را بدانی.

12 دقیقه مطالعه · 5 سؤال تمرینی · SQL از صفر: پرس‌وجو برای تحلیل داده

ORDER BY و LIMIT

بدون ORDER BY، ترتیب ردیف‌ها تضمین‌شده نیست (ممکن است امروز مرتب به نظر برسد و فردا نه). هر وقت ترتیب برایتان مهم است، صریح بخواهید:

SELECT name, price
FROM products
ORDER BY price DESC, name ASC
LIMIT 3;
  • ASC صعودی (پیش‌فرض) و DESC نزولی است. با چند ستون (جداشده با کاما)، اگر ستون اول مساوی بود به ستون دوم نگاه می‌شود.
  • LIMIT n فقط n ردیف اول (بعد از مرتب‌سازی) را نگه می‌دارد. «سه کالای گران‌تر» همین است.
  • OFFSET k اول k ردیف را رد می‌کند. LIMIT 10 OFFSET 20 یعنی صفحه‌ی سوم، با ۱۰ ردیف در هر صفحه.
  • NULL ها: در PostgreSQL در ترتیب صعودی آخر می‌آیند؛ پایگاه‌های دیگر ممکن است فرق کنند (می‌توان NULLS FIRST یا NULLS LAST را صریح نوشت).

ترتیب نوشتن بخش‌ها ثابت است: SELECT ← FROM ← WHERE ← ORDER BY ← LIMIT.

منابع و مطالعه‌ی بیشتر

برای تمرین دستی روی یک پایگاه داده‌ی واقعی (که در این دوره امکانش را نداریم) این منبع‌های رایگان عالی‌اند:

آن‌ها بهترین جا برای نوشتن پرس‌وجو هستند. کار یادمان چیز دیگری است: اینجا هر مفهوم را با سؤال‌های «نتیجه چه می‌شود؟» می‌سنجی و مرور فاصله‌دار تضمین می‌کند که چند هفته بعد هم نحو و تله‌هایی مثل NULL یادت بماند. بهترین روش، ترکیب هر دو است.

تمرین‌های این درس را حل کن (رایگان)