ورود

View Full Version : بدست آوردن تعداد مشخصی سطر با استفاده از SQL استاندارد



arashmmc
شنبه 07 بهمن 1385, 13:21 عصر
با سلام.

چگونه می توان با استفاده از دستورات SQL استاندارد. 10 رکورد اول یک جدول را درآورد.

someCoder
شنبه 07 بهمن 1385, 15:04 عصر
SELECT TOP 10 * FROM ... بعد از FROM هم دیگه نکته ای نداره و ... گذاشتم

DonetKarvb
یک شنبه 08 بهمن 1385, 00:32 صبح
اگر از SQL Server 2005 استفاده کنی میتونی اون مقدار رو متغییر انتخاب کنی


Declare @TopNum int
Select top(@TopNum) From table1

whitehat
یک شنبه 08 بهمن 1385, 09:36 صبح
جواب دوستان صحیح است اما TOP جزء SQL استاندارد (http://developer.mimer.com/documentation/html_92/Mimer_SQL_Mobile_DocSet/MasterMobileNetIX.html) نیست :ناراحت:
برای این کار شما باید جدول خود را با استفاده از دستور Insert در جدولی که شامل کلید اصلی identity dیا AutoNumber است بریزید.اکثر پایگاه داده ها مانند SQL-Server,Access,Oracle,MySql و ... فیلد Identity را پشتیبانی می کنند.
سپس به صورت زیر Query بگیرید


Select * from NewTable
Where IdentityValue<10


در غیر اینصورت باید فیلد Identity را خودتان بسازید.

arashmmc
پنج شنبه 12 بهمن 1385, 17:32 عصر
با تشکر از دوست عزیز
آیا متغیر یا تابع(درست نمی دانم) IdentityValue جزء دستورات SQL استاندارد است. آن طوری که شما فرمودید ظاهرا مربوط به Engine است.
در ضمن آیا روش بهتری وجود دارد. در صورتی که فرض کنیم یک صفت کلیدی به اسم ATT در جدول وجود داشته باشد.

AminSobati
پنج شنبه 12 بهمن 1385, 18:36 عصر
نمیدونم چرا از TOP نباید استفاده کنید در حالیکه دارید برای SQL Server برنامه مینویسید! فیلد Identity رو توصیه نمیکنم چون ممکنه رکوردی حذف شده باشه بین 1 تا 10 که در این حالت شما رکوردهای کمتری بدست خواهید آورد. پس بهتره به عدد Identity تکیه نکنید:


use northwind
go

select * from
(select (select count(*) from customers c where c.customerid<=c2.customerid) as Rank, *
from customers c2) as tmp
where Rank<=10

arashmmc
دوشنبه 16 بهمن 1385, 15:56 عصر
حق با شماست! چون در این سایت بخشی مربوط به بحث در مورد sql standard وجود ندارد مجبور شدم این مباحث را اینجا مطرح کنم