مرتبسازی و محدود کردن نتیجه
با 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.
منابع و مطالعهی بیشتر
برای تمرین دستی روی یک پایگاه دادهی واقعی (که در این دوره امکانش را نداریم) این منبعهای رایگان عالیاند:
- SQLBolt: درسهای کوتاه با ویرایشگر SQL تعاملی در مرورگر (انگلیسی).
- فصل ۲ مستندات PostgreSQL، «The SQL Language»: آموزش رسمی و دقیق.
آنها بهترین جا برای نوشتن پرسوجو هستند. کار یادمان چیز دیگری است: اینجا هر مفهوم را با سؤالهای «نتیجه چه میشود؟» میسنجی و مرور فاصلهدار تضمین میکند که چند هفته بعد هم نحو و تلههایی مثل NULL یادت بماند. بهترین روش، ترکیب هر دو است.