View Full Version : نمایش رکورد
کلکسیون
دوشنبه 04 آبان 1394, 08:36 صبح
با عرض سلام خدمت همکاران گرامی
تو sql دستوری هست که بتونم فقط رکوردهای 50 تا 100 رو نمایش بدم ؟
دقت داشته باشید که منظورم آیدی های بین 50 تا 100 نسیت ، رکوردهای بین 50 تا 100 هستش ، ممکنه از رکورد 50 تا 100 آیدی های مختلفی وجود داشته باشه که بیشتر از 50 تا 100 باشه
برای راهنمایی مثلا دستور Top(50) فقط 50 رکورد اول رو بر میگردونه ، بدونه توجه به اینکه آیدی اونها چند هستش
En_MK
دوشنبه 04 آبان 1394, 10:47 صبح
WITH selectList AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY CulomnName) AS RowNumber
FROM TableName
)
SELECT *
FROM selectList
WHERE RowNumber BETWEEN 1 AND 10;
نیما عطایی
دوشنبه 04 آبان 1394, 10:49 صبح
سلام برای این کار نیاز هست یه فیلد شماره خط بصورت مجازی به دستورات select اضافه کنید
مثل
DECLARE @StartRow int;
DECLARE @EndRow int;
DECLARE @Page int;
DECLARE @PageSize int;
SET @StartRow = (@Page -1) * @PageSize + 1;
SET @EndRow = @Page * @PageSize;
WITH blogs AS
(SELECT BlogName,
ROW_NUMBER() OVER(ORDER BY ID DESC) as intRow,
COUNT(ID) OVER() AS TotalHits
FROM tblBlog)
SELECT BlogName, TotalHits FROM blogs
WHERE intRow BETWEEN @StartRow AND @EndRow
اگه کمی sql آشنا باشید دستور خیلی پیچیده ای نیست
@Page و @PageSize رو مقدار بدید و خروجی رو استفاده کنید
موفق باشید
Seyyed_H_T
دوشنبه 11 آبان 1394, 14:01 عصر
دو نکته در مورد این کوئری کاربر محترم En_Mk هست که باید در نظر بگیرید:
در نتایج پایانی یک فیلد با عنوان RowNumber علاوه بر فیلدهای موجود نمایش داده خواهد شد.
نتایج این کوئری به ترتیب ColumnName مرتب خواهند شد لذا از رکورد 1 تا 10 که مشخص شده است به معنی «از رکورد 1 تا 10 به ترتیب ستون ColumnName» خواهد بود.
یک نکته اضافه اینکه کاربر از رکورد 50 تا 100 رو مد نظر داشت که شرط نهایی می شود :
WHERE RowNumber BETWEEN 50 AND 100;.
البته پیشنهاد من این کوئری هستش:
SELECT *
FROM (SELECT *, ROWNUMBER() OVER (ORDER BY (SELECT 0)) As rowNum
FROM yourTable) t
WHERE rowNum BETWEEN 50 AND 100;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.