PDA

View Full Version : سوال: حذف اولین روکرد پیدا شده



baran_mehr
چهارشنبه 01 خرداد 1387, 16:37 عصر
سلام.:لبخند:
من یه جدولی دارم که داخلش 10 تا اسم علی هست ...میخوام دستوری بنویسم که اولین علی رو که پیدا میکنه از جدول حذف کنه و به بقیه افرادی که نامشون علی هست کاری نداشته باشه:متفکر:
ممنون

رضا عربلو
چهارشنبه 01 خرداد 1387, 21:00 عصر
مسلماً جدول شما یک PK (پرایمری کی) دارد. مثلاً ID. با این دستور می توانید اولین رکورد را پیدا کنید


DECLARE @ID INT;
SELECT TOP 1 @ID=ID FROM Table1 WHERE PersonName='علی';


و با دستور زیر می توانی آنرا حذف کنی


DELETE Table1 Where ID=@ID

baran_mehr
پنج شنبه 02 خرداد 1387, 06:17 صبح
مرسی داداش گلم اما تو این سبک رو انجام داده بودم
میخواستم بدونم این کار رو نمیشه با یک دستو در یک جا انجام داد مثلا خروجی دستور select رو مستقیم به دستور delete داد ؟

Hamid.Kad
پنج شنبه 02 خرداد 1387, 10:06 صبح
این دستور مشکلی داره ؟ الان خودم نمی تونم تست کنم


Delete from Table1 where Name = (Select Name from Table1 where Name = 'Ali')

AminSobati
پنج شنبه 02 خرداد 1387, 12:04 عصر
در SQL Server 2005 دستور Delete مثل Select از top پشتیبانی میکنه. اما در 2000 مشابه چیزی که دوستان پیشنهاد کردند باید انجام بدین

baran_mehr
پنج شنبه 02 خرداد 1387, 12:13 عصر
سلام داداش گلم
این کدی که دادی کار نمیکنه و اگرم کار کنه تمام aliها رو پاک میکنه چون دستور select همه ali ها رو بر میگردونه من یه همچین کدی رو به دستور select یک تابع top 1 هم گذاشتم که فقط اولی رو برگردونه اما بازم همه ی علی ها رو پاک کرد.

baran_mehr
پنج شنبه 02 خرداد 1387, 12:18 عصر
سلام AminSobati جان
من Sql2005 نصب ندارم.و از طرفی الان به دلیلی Sql2000 رو هم مجبور شدم پاک کنم و دارم یا اکسس این کدهارو امتحان میکنم .

Arghavan_Reza
پنج شنبه 02 خرداد 1387, 17:22 عصر
کد زیر نظر شما را تامین میکند:

DELETE FROM Table1 WHERE ID = (SELECT TOP 1 ID FROM Table1 WHERE PersonName='علی')

baran_mehr
پنج شنبه 02 خرداد 1387, 19:28 عصر
سلام خدمت همه دوستان عزیز.
ممنون از همتون که وقت گذاشتید، مخصوصا داداش گلم Arghavan_Reza جان