SQL - کار با LIMIT در دیتابیس
در این مقاله میخوایم در باره LIMIT
حرف بزنیم و اینکه چطوری میشه اطلاعات برگشتی از SELECT
رو در تعداد محدود تری دریافت کنیم. برای مثال اگه 1000 تا کاربر داشته باشیم، فقط 5 تای اول رو بهمون نشون بده و یا 10 تای دوم.
مقدمه ای بر LIMIT
قسمت LIMIT
توی SELECT
اختیاریه ( مثل WHERE
) و کارش اینه که تعداد ردیف های برگشتی از دستور SELECT
رو محدود کنیم.
نحوه استفاده از LIMIT
به شکل زیر است:
SELECT select_list
FROM table_name
ORDER BY sort_expression
LIMIT row_count
در نتیجه دستور بالا، تعداد ردیف های برگشتی از دیتابیس اگه بیشتر از مقدار row_count
باشه، دقیقا به تعداد row_count
برمیگردونه. پس این منطقیه که اگر مقدار row_count
رو 0
بدیم، هیچی بهمون نمایش داده نشه. ولی اگه مقدار row_count
رو NULL
بدیم، تمامی ردیف ها رو بهمون نشون میده ( مثل زمانی که اصلا LIMIT
نداریم ).
در صورتی که بخوایم تعدادی از ردیف های برگشتی رو بیخیال بشیم و بعد از اون تعداد، به تعداد row_count
ردیف نمایش بدیم از OFFSET
استفاده میکنیم. به کد زیر توجه کنین:
SELECT select_list
FROM table_name
LIMIT row_count OFFSET row_to_skip;
توی این مثال، اول تعداد row_to_skip
دریف رد میشه بعد به تعداد row_count
ردیف نمایش داده میشه. و این موضوع هم منطقیه که اگه row_to_skip
رو 0
بدیم، مثل اینه که اصلا از OFFSET
استفاده نکردیم. همچنین، بکار بردن کلمه OFFSET
اختیاریه و میتونیم این دستور رو به شکل زیر بنویسیم:
SELECT select_list
FROM table_name
LIMIT row_count row_to_skip;
مثال هایی از LIMIT
بیاین با هم چنتا مثال از LIMIT
ببینیم تا بهتر درکش کنیم:
فرض کنین جدولی به اسم Film
داریم با ساختار زیر با یک سری اطلاعات پیشفرض توش:
1) استفاده از LIMIT
برای محدود کردن تعداد ردیف های برگشتی Query
مثال زیر به ما 5 فیلم اولی که در جدول اضافه شدن رو نشون میده:
SELECT
film_id,
title,
release_year
FROM
film
ORDER BY
film_id
LIMIT 5;
از ORDER BY
استفاده کردیم تا اطلاعات جدول رو برطبق film_id
و صعودی لیست کنیم. ( اگه نمیدونی ORDR BY چیه، یه سر برو به کار با SELECT ORDER BY در دیتابیس )
SELECT
film_id,
title,
release_year
FROM
film
ORDER BY
film_id
LIMIT 5;
نتیجه دستور بالا به شکل زیر خواهد بود:
1) استفاده از LIMIT
برای محدود کردن تعداد ردیف های برگشتی Query
به همراه OFFSET
فرض کنین بخوایم 4 فیلم رو از جدول بخونیم ولی 3 فیلم اول رو بیخیال بشیم و بعد از اون 3 تا، 4 تای بعدی رو بخونیم. دستور به شکل زیر میشه:
SELECT
film_id,
title,
release_year
FROM
film
ORDER BY
film_id
LIMIT 4 OFFSET 3;
و در نتیجه :
برای درک بهتر تصویر بالا رو با تصویر Query
قبلی مقایسه کنین. میبینین 3
تای اول نیستن و بعد اون 3
تا، 4
تا ردیف از جدول نشون داده شده.
پس به شکل کلی اگه بخوام بگم، دستور LIMIT
تعداد ردیف های برگشتی از Table
رو محدود میکنه واسمون.