SQL Server-এ EXCEPT অপারেটর প্রথম SELECT স্টেটমেন্টে ফেরত দেওয়া সারি গুলো রিটার্ন করতে ব্যবহৃত হয় যা দ্বিতীয় SELECT স্টেটমেন্টে ফেরত দেওয়া হয়নি। প্রতিটি SELECT স্টেটমেন্টের একটি ডেটা সেট থাকে। EXCEPT অপারেটর প্রথম সেট থেকে রেকর্ড নেয় এবং দ্বিতীয় সেটের ফলাফল গুলো বাদ দিয়ে দেয়।
EXCEPT কোয়েরি

EXCEPT কোয়েরি উদাহরণ
ব্যাখ্যা: EXCEPT কোয়েরি নীল এলাকায় থাকা রেকর্ড গুলো রিটার্ন করে, অর্থাৎ শুধুমাত্র ডেটা সেট ১-এ থাকা রেকর্ড গুলো যা ডেটা সেট ২-তে নেই।
EXCEPT কোয়েরিতে প্রতিটি SELECT স্টেটমেন্টের রেজাল্ট সেটে একই সংখ্যক ফিল্ড থাকতে হবে এবং একই ডেটা টাইপের হতে হবে।
EXCEPT অপারেটর সিনট্যাক্স
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn FROM bang [WHERE dieu_kien] EXCEPT SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn FROM bang [WHERE dieu_kien];
ভেরিয়েবল নাম বা মান
bieu_thuc
যে কলাম বা মান দুটি SELECT স্টেটমেন্টের মধ্যে তুলনা করতে চান। এগুলো প্রতিটি SELECT স্টেটমেন্টে একই ইনফরমেশন ফিল্ডে থাকতে হয় না কিন্তু সংশ্লিষ্ট কলাম গুলোর ডেটা একই হতে হবে।
bang
যে টেবিল থেকে রেকর্ড পেতে চান। FROM ক্লজে কমপক্ষে ১ টি টেবিল থাকতে হবে।
WHERE dieu_kien
ঐচ্ছিক। রেকর্ড সিলেক্ট করার জন্য যা শর্ত পূরণ করতে হবে।
নোট:
- দুটি SELECT স্টেটমেন্টে একই সংখ্যক এক্সপ্রেশন থাকতে হবে।
- প্রতিটি SELECT স্টেটমেন্টের সংশ্লিষ্ট কলাম একই ডেটা টাইপের হতে হবে।
- EXCEPT অপারেটর প্রথম SELECT স্টেটমেন্ট থেকে সব রেকর্ড রিটার্ন করে যা দ্বিতীয় SELECT স্টেটমেন্টে নেই।
- SQL Server-এ EXCEPT অপারেটর Oracle-এ MINUS অপারেটরের সমতুল্য।
উদাহরণ - ১ এক্সপ্রেশন সহ
SELECT sanpham_id FROM sanpham EXCEPT SELECT sanpham_id FROM hangtonkho;
এই EXCEPT অপারেটর উদাহরণে, ফলাফল sanpham টেবিলের সব sanpham_id মান রিটার্ন করবে যা hangtonkho টেবিলে নেই। এর মানে যদি sanpham_id মান দুটি টেবিলেই থাকে, তবে সেটি রিটার্ন হবena।
উদাহরণ - একাধিক এক্সপ্রেশন সহ
SELECT danhba_id, ho, ten FROM danhba WHERE ho = 'Anderson' EXCEPT SELECT nhanvien_id, ho, ten FROM nhanvien;
এই উদাহরণে, কোয়েরি danhba টেবিলের সেই রেকর্ড গুলো রিটার্ন করবে যেখানে কন্ট্যাক্ট আইডি, প্রথম ও শেষ নাম nhanvien টেবিলের কর্মচারীর আইডি, উপনাম ও প্রথম নামের সাথে মেলে না।
উদাহরণ - ORDER BY ক্লজ ব্যবহার করে
SELECT nhacung_id, nhacung_ten FROM nhacung WHERE bang = 'Florida' EXCEPT SELECT congty_id, congty_ten FROM congty WHERE congty_id <= 400 ORDER BY 2;
এই উদাহরণে, যেহেতু দুটি SELECT স্টেটমেন্টে কলামের নাম ভিন্ন, তাই রেজাল্ট সেটে অবস্থানের মাধ্যমে ORDER BY ক্লজে কলাম রেফার করা সহজ। উপরের উদাহরণে, আমরা nhacung_ten / congty_ten কে আরোহী ক্রমে ফিল্টার করেছি ORDER BY 2 ব্যবহার করে।
কারণ nhacung_ten / congty_ten রেজাল্ট সেটে ২য় অবস্থানে আছে।