আমার জন্য প্রথম এক পার্থক্য: যদি HAVING
এসকিউএল ভাষা থেকে সরিয়ে ফেলা হয় তবে জীবন আগের মতো কমবেশি চলবে। অবশ্যই একটি সংখ্যালঘু প্রশ্নের ডাইরেক্টেড টেবিল, সিটিই ইত্যাদি ব্যবহার করে আবার লিখতে হবে তবে ফলস্বরূপ এগুলি বোঝার এবং বজায় রাখা আরও সহজ হবে। সম্ভবত বিক্রেতাদের অপ্টিমাইজার কোডটি এর জন্য অ্যাকাউন্টে আবার লিখতে হবে, আবার শিল্পের মধ্যে উন্নতির সুযোগ।
WHERE
ভাষা থেকে সরানোর জন্য এখন এক মুহুর্তের জন্য বিবেচনা করুন । এবার অস্তিত্বের বেশিরভাগ ক্যোয়ারীর একটি সুস্পষ্ট বিকল্প নির্মাণ ছাড়াই আবার লিখতে হবে। কোডার্সকে সৃজনশীল উদাহরণ পেতে হবে যেমন অভ্যন্তরীণভাবে একটি টেবিলের সাথে DUAL
জড়িত যা সঠিকভাবে একটি সারি (উদাহরণস্বরূপ ওরাকল এ) ধারণ ON
করে পূর্ববর্তী অনুকরণটি ব্যবহার করেWHERE
ধারাটি । এই ধরনের নির্মাণগুলি স্বীকৃত হবে; এটি স্পষ্টতই প্রকাশিত হবে যে ভাষা থেকে কিছু অনুপস্থিত ছিল এবং ফলস্বরূপ পরিস্থিতি আরও খারাপ হবে।
টিএল; ডিআর আমরা HAVING
আগামীকাল হারাতে পারি এবং বিষয়গুলি আরও খারাপ কিছু নাও হতে পারে, সম্ভবত আরও ভাল, তবে এটির বিষয়ে বলা যায় না WHERE
।
এখানকার উত্তরগুলি থেকে মনে হয় যে অনেক লোক বুঝতে পারে না যে একটি HAVING
ধারা ছাড়া কোনও GROUP BY
ধারা ব্যবহার করা যেতে পারে । এই ক্ষেত্রে, HAVING
ক্লজটি পুরো টেবিলের এক্সপ্রেশনটিতে প্রয়োগ করা হয় এবং প্রয়োজন যে কেবল ধারাটিতে উপস্থিত হওয়া প্রয়োজন SELECT
। সাধারণত HAVING
ধারাটি সমষ্টিগুলিকে জড়িত করে।
এটি শোনার চেয়ে এটি আরও কার্যকর। উদাহরণস্বরূপ, name
কলামটি সমস্ত মানের জন্য অনন্য কিনা তা পরীক্ষা করার জন্য এই কোয়েরিকে বিবেচনা করুন T
:
SELECT 1 AS result
FROM T
HAVING COUNT( DISTINCT name ) = COUNT( name );
দুটি মাত্র সম্ভাব্য ফলাফল রয়েছে: HAVING
ধারাটি যদি সত্য হয় তবে ফলাফলটি একটি একক সারিতে মান সহ থাকবে 1
, অন্যথায় ফলাফলটি খালি সেট হবে।
HAVING
হ'ল পোস্ট- অগ্রিগেশন ফিল্টার, যেখানেWHERE
প্রাক-সমষ্টি ফিল্টার।