চারদিকে গুগলিং, জনপ্রিয় উত্তরটি "কেবল নিরাপদ মোডটি বন্ধ করুন" বলে মনে হচ্ছে :
SET SQL_SAFE_UPDATES = 0;
DELETE FROM instructor WHERE salary BETWEEN 13000 AND 15000;
SET SQL_SAFE_UPDATES = 1;
আমি যদি সত্যবাদী হন তবে আমি বলতে পারি না যে আমি কখনও নিরাপদ মোডে চলার অভ্যাস করেছি made তবুও, আমি এই উত্তরটির সাথে পুরোপুরি স্বাচ্ছন্দ্যবোধ করি না কারণ এটি কেবলমাত্র ধরে নেওয়া হয় আপনি যখনই কোনও সমস্যার মুখোমুখি হোন আপনার ডাটাবেস কনফিগারেশনটি পরিবর্তন করা উচিত।
সুতরাং, আপনার দ্বিতীয় ক্যোয়ারীটি চিহ্নটির কাছাকাছি, তবে আরেকটি সমস্যা হিট করেছে: মাইএসকিউএল সাবকিউয়েরিতে কয়েকটি বিধিনিষেধ প্রয়োগ করে এবং এর মধ্যে একটি হ'ল আপনি কোনও টেবিল থেকে সাবকিউয়েরিতে নির্বাচন করার সময় পরিবর্তন করতে পারবেন না।
মাইএসকিউএল ম্যানুয়াল থেকে উদ্ধৃতি দেওয়া, সাবকিউয়েরিতে বিধিনিষেধ :
সাধারণভাবে, আপনি কোনও টেবিলটি সংশোধন করতে পারবেন না এবং সাব-কোয়েরিতে একই টেবিল থেকে নির্বাচন করতে পারবেন না। উদাহরণস্বরূপ, এই সীমাবদ্ধতা নিম্নলিখিত ফর্মগুলির বিবৃতিতে প্রযোজ্য:
DELETE FROM t WHERE ... (SELECT ... FROM t ...);
UPDATE t ... WHERE col = (SELECT ... FROM t ...);
{INSERT|REPLACE} INTO t (SELECT ... FROM t ...);
ব্যতিক্রম: আপনি যদি এফআরওএম ক্লজে সংশোধিত টেবিলের জন্য সাবকিয়ারি ব্যবহার করেন তবে পূর্ববর্তী নিষেধাজ্ঞাগুলি প্রযোজ্য নয়। উদাহরণ:
UPDATE t ... WHERE col = (SELECT * FROM (SELECT ... FROM t...) AS _t ...);
এখানে এফআরওএম ক্লজের সাবকোয়ারি থেকে ফলাফলটি একটি অস্থায়ী টেবিল হিসাবে সংরক্ষণ করা হয়, সুতরাং t এর সাথে সম্পর্কিত সারিগুলি ইতিমধ্যে টি-তে আপডেট হওয়ার সময় নির্বাচন করা হয়েছিল।
যে শেষ বিট আপনার উত্তর। অস্থায়ী সারণীতে লক্ষ্য আইডি নির্বাচন করুন, তারপরে সেই টেবিলের আইডি উল্লেখ করে মুছুন:
DELETE FROM instructor WHERE id IN (
SELECT temp.id FROM (
SELECT id FROM instructor WHERE salary BETWEEN 13000 AND 15000
) AS temp
);
এসকিউএলফিডাল ডেমো ।