PDA

View Full Version : گرفتن بزرگترین آی دی در جدول و تعداد محدود رکورد



majnun
دوشنبه 22 شهریور 1389, 22:50 عصر
سلام دوستان

من یه جدول دارم که میخوام آخرین رکوردی که درونش قرار گرفت رو با چندتا شرط بگیرم

یه فیلد دارم که اتوماتیک شماره گذاری میشه

ممنون میشم کمک کنید


و سوال بعدیم اینه که چجوری میتونم دستوری بنویسم که بشه فقط 15 تا رکورد از جدول بخونم نه بیشتر

ممنون

ahmad_eagle2002
دوشنبه 22 شهریور 1389, 23:58 عصر
ببینید این کد کمکتون میکنه

CREATE TABLE [t_1](
[id] [int] identity(1,1),
[name] [varchar](30) NULL,
[Age] [int] NULL
)
go

insert t_1 values('ahmad',25),('Mohsen',30),('ali',18)
go

select top 1 * from t_1 order by id desc

بهزادصادقی
سه شنبه 23 شهریور 1389, 01:05 صبح
یک راه دیگر که در شرایطی خاص می توانید خیلی سریعتر از راه حل احمد آقا باشد، استفاده از تابع
ident_current می باشد. ورودی این تابع اسم یک جدول است. خروجی اش ارزش آخرین identity می باشد که در آن جدول استفاده شد. با استفاده مجدد از کد احمد آقا:



CREATE TABLE [t_1](
[id] [int] identity(1,1),
[name] [varchar](30) NULL,
[Age] [int] NULL
)
go

insert t_1 values('ahmad',25),('Mohsen',30),('ali',18)
go

select ident_current( 't_1' );


ققط دو تا مسئله:

1. این فقط تا زمانی صحیح کار می کند که سیستم خودش به طور اتوماتیک ارزش identity ها را تعیین کند.

2. سرعت این کد در مقایسه با کد احمد آقا زمانی چشم گیر می شود که تعداد سطرهای جدول خیلی زیاد باشد. مثلا اگر شما چند میلیون سطر داشته باشید، زدن یک select روی ستون identity و بعد مرتب کردن آنها بر اساس ترتیب desc می تواند خیلی زمان ببرد. ولی استفاده از ident_current بلافاصله جواب می دهد.

Asad.Safari
سه شنبه 23 شهریور 1389, 11:34 صبح
select top 1 * from t_1 order by id desc
و

select ident_current( 't_1' );

روش اول که مرسوم ترین روش در این مرز و بوم می باشد و روش دوم که بسیار پرفرمنس رو می بره بالا . جناب صادقی نکته ظریف و جالبی بود .

موفق باشید

ahmad_eagle2002
سه شنبه 23 شهریور 1389, 14:14 عصر
بهزاد جان نكته خيلي جالبي بود از راهنمايي خوب وحرفه ايت تشكر مي كنم

als_1360
چهارشنبه 31 شهریور 1389, 10:40 صبح
می شه از دستور زیر هم استفاده کرد :


SELCT MAX(id) FROM TABLE