আমি মুছে ফেলতে জবানবন্দিতে কোনও উপনাম ব্যবহার করতে পারি না কেন?


158

ভিজ্যুয়াল স্টুডিও 2010 এর এসকিউএল সার্ভার কমপ্যাক্ট সংস্করণে (সম্ভবত এসকিউএল সার্ভার এবং সাধারণভাবে এসকিউএল, আমি জানি না), এই কমান্ডটি কাজ করে:

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))

তবে এই আদেশটি এর ত্রুটি তৈরি করে: Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

@ অ্যারন-বারট্র্যান্ডও আমার শিরোনামটি সংশোধন করার জন্য ধন্যবাদ। আমি যা পোস্ট করেছি তার সঠিক শব্দটি বুঝতে পারিনি (অন্যথায় গুগল এটি দ্রুত সমাধান করতে পারে)। আবার আপনাকে ধন্যবাদ.
রিকার্ডো আলতামিরানো

কোন চিন্তা করো না. অন্য পাঠকদের জন্য এটি পরিষ্কার করার চেষ্টা করছি।
অ্যারন বারট্রান্ড

আমি আপনার সাথে যেভাবে বিভিন্ন কমান্ডের মধ্যে সিনট্যাক্সের বৈকল্পিকতাগুলি কিছুটা সময়হীন a
অ্যারন বারট্র্যান্ড

এখানে একই প্রশ্ন, তবে আপডেটের
ড্যানিয়েল নীল

উত্তর:


239

টেবিলটির নামকরণ করতে আপনাকে বলতে হবে:

DELETE f FROM dbo.foods AS f WHERE f.name IN (...);

আমি এই নির্দিষ্ট DELETEবিবৃতিটির জন্য অ্যালিজিংয়ের বিন্দুটি দেখতে ব্যর্থ হয়েছি , বিশেষত (কমপক্ষে আইআইআরসি) যেহেতু এটি আর কঠোর এএনএসআইয়ের সাথে মানাবে না। তবে হ্যাঁ, মন্তব্যগুলির পরামর্শ অনুসারে, অন্যান্য ক্যোয়ারী ফর্মগুলির জন্য এটি প্রয়োজনীয় হতে পারে (যেমন: সম্পর্ক)।


2
আমি মূলত কেবল কৌতূহলী ছিলাম, কারণ আমি সাধারণত যখন ব্যবহার করার সময় SELECTঅন্যান্য নাম এবং অন্যান্য জাতীয় বিবৃতি ব্যবহার করি, তাই আমি সহজাতভাবে আমার যা অভ্যস্ত তা করেছি এবং কেন এটি সঠিকভাবে কাজ করে না তা ভাবছিলাম।
রিকার্ডো আলতামিরানো

41
+1 ওপির ক্ষেত্রে, এলিয়াসিংয়ের প্রয়োজন হতে পারে না, তবে এটি আমার পক্ষে সহায়ক কারণ আমি একটি বিদ্যমান ক্লজটি ব্যবহার করছিলাম, তাই আমাকে টেবিলটি উফফ করতে হয়েছিল যাতে আমি উভয় প্রশ্নের একসাথে বেঁধে রাখতে পারি।
রিকার্ডো

4
আমি বিদ্যমান সিলিক্ট ক্যোয়ারী নেওয়ার সময় এবং অ্যালিজিংয়ের পুনর্লিখন না করে দ্রুত এটি মুছে ফেলার বিবৃতিতে পরিণত করার সময় আমি একটি সমাধান খুঁজছিলাম।
অ্যালেক্স

4
এটি গুরুত্বপূর্ণ যেখানে ব্যবহারের ক্ষেত্রে উদাহরণ; মুছে ফেলা হচ্ছে দ্বিতীয় সারণির সামগ্রীর উপর ভিত্তি করে যেখানে একাধিক কলাম জড়িত রয়েছে (যেমন তাই inবা not inকাজ করবে না:DELETE f from dbo.foods as f where not exists (select top 1 1 from animalDiets a where a.AnimalId = f.AnimalId and a.DietId = f.DietId)
এলবিয়ান

3
যখন আপনি কোনও টেবিল থেকে মুছতে চান তবে উপনামের সাথে মুছে ফেলা দরকারী তবে সারিগুলির একটি হ্রাসিত সেট পেতে অন্যান্য টেবিল / ভিউগুলিতে সেই টেবিলটিতে যোগ দিতে হবে। উদাহরণস্বরূপdelete o from Order as o inner join Customer as c on c.CustomerID = o.CustomerID where c.ArchiveOrders = 1
অ্যান্ড্রু জেনস

74

মুছে ফেলার বিবৃতিটিতে অদ্ভুত বাক্য গঠন রয়েছে। এটা এইভাবেই চলে:

DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

1
@ রিকার্ডো কেবল পার্থক্য হ'ল স্কিমা। তবে সময় থেকে জানা যায় যে দুজনেই একই সাথে পোস্ট করা হয়েছিল।
মুকুস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.