PDA

View Full Version : انتخاب 5 رکورد ماقبل آخر از جدول



hamid1988
شنبه 20 مهر 1392, 15:50 عصر
سلام دوستان
میخام 5 رکورد ماقبل آخر جدول رو انتخاب کنم.
به بیان دیگر Select Top 5 * From Table به شرط اینکه آخرین سطر جزو اونا نباشه.

m.webgard
یک شنبه 21 مهر 1392, 13:14 عصر
سلام دوست عزیز
از کد زیر میتونید استفاده کنید. به جای TableName عنوان جدول رو قرار بدید. موفق باشید
SELECT top (6) * FROM TableName
EXCEPT
SELECT top (1) * FROM TableName

hamid1988
یک شنبه 21 مهر 1392, 15:50 عصر
ممنون دوست عزیز
دو سوال داشتم:
1- اگه بخوام Select Top از آخر انتخاب کنه (Order by Id desc) چه تغییری باید در کوئری بدم؟
SELECT top (5) * FROM TableName Order By Id Desc
EXCEPT
SELECT top (1) * FROM News Order By Id Desc
کوئری بالا رو امتحان کردم ایراد می گیره.

2- اگه یکی از فیلدها nText باشه. کوئری کار نمیکنه.
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

m.webgard
یک شنبه 21 مهر 1392, 22:06 عصر
ممنون دوست عزیز
دو سوال داشتم:
1- اگه بخوام Select Top از آخر انتخاب کنه (Order by Id desc) چه تغییری باید در کوئری بدم؟
SELECT top (5) * FROM TableName Order By Id Desc
EXCEPT
SELECT top (1) * FROM News Order By Id Desc
کوئری بالا رو امتحان کردم ایراد می گیره.

2- اگه یکی از فیلدها nText باشه. کوئری کار نمیکنه.
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
سلام
دوست عزیز بابت سوال اولتون من کوئری رو به شکل زیر تغییر دادم. البته شاید راه بهینه تری هم باشه.
Select * from(SELECT top (5) * FROM TableName Order By Id Desc)a
EXCEPT
Select * from(SELECT top (1) * FROM TableName Order By Id Desc)b
بابت سوال دوم هم باید بگم که عملگر Except بر روی داده های ntext کار نمیکنه. البته این نکته قابل ذکره که مایکروسافت از SQL Server 2008 به بعد نوع داده ntext رو بهینه نمیدونه و nvarchar max رو بهینه تر میدونه. موفق باشید.