এটা সত্যিই একটি ভাল প্রশ্ন। আমি ইতিমধ্যে এখানে কিছু দরকারী উত্তর পড়েছি, তবে সম্ভবত আমি আরও সুনির্দিষ্ট ব্যাখ্যা যোগ করতে পারি।
GROUP BY স্টেটমেন্টের মাধ্যমে ক্যোয়ারী ফলাফলের সংখ্যা হ্রাস করা যতক্ষণ আপনি অতিরিক্ত তথ্য অনুসন্ধান না করেন ততক্ষণ সহজ। ধরে নেওয়া যাক আপনি নীচের সারণীটির 'অবস্থানগুলি' পেয়ে গেছেন।
--country-- --city--
France Lyon
Poland Krakow
France Paris
France Marseille
Italy Milano
এখন কোয়েরি
SELECT country FROM locations
GROUP BY country
ফলাফল হবে:
--country--
France
Poland
Italy
তবে, নিম্নলিখিত কোয়েরি
SELECT country, city FROM locations
GROUP BY country
... এম এস এসকিউএলে একটি ত্রুটি ছুঁড়েছে, কারণ আপনার কম্পিউটার কীভাবে জানতে পারে যে "ফ্রান্স" এর ডানদিকে আপনি মাঠে পড়তে চান সেই তিনটি ফরাসি শহর "লিয়ন", "প্যারিস" বা "মার্সেইল"?
দ্বিতীয় ক্যোয়ারীটি সংশোধন করার জন্য আপনাকে অবশ্যই এই তথ্যটি যুক্ত করতে হবে। এটি করার একটি উপায় হ'ল MAX () বা MIN () ফাংশনগুলি ব্যবহার করে, সমস্ত প্রার্থীর মধ্যে সবচেয়ে বড় বা ক্ষুদ্রতম মান নির্বাচন করে। MAX () এবং MIN () কেবলমাত্র সংখ্যার মানগুলিতে প্রযোজ্য নয়, তবে স্ট্রিং মানগুলির বর্ণানুক্রমিক ক্রমও তুলনা করে।
SELECT country, MAX(city) FROM locations
GROUP BY country
ফলাফল হবে:
--country-- --city--
France Paris
Poland Krakow
Italy Milano
বা:
SELECT country, MIN(city) FROM locations
GROUP BY country
ফলাফল হবে:
--country-- --city--
France Lyon
Poland Krakow
Italy Milano
বর্ণানুক্রমিক (বা সংখ্যাসূচক) ক্রমের উভয় প্রান্ত থেকে আপনার মানটি নির্বাচন করার ক্ষেত্রে আপনি যতক্ষণ না ভাল থাকেন ততক্ষণ এই ফাংশনগুলি একটি ভাল সমাধান। তবে এই ঘটনাটি না হলে কী হবে? আসুন আমরা ধরে নিই যে আপনার একটি নির্দিষ্ট বৈশিষ্ট্যযুক্ত, যেমন 'এম' অক্ষর দিয়ে শুরু করে একটি মান প্রয়োজন। এখন বিষয় জটিল হয়ে উঠছে।
আমি এখনও অবধি কেবলমাত্র সমাধানটি খুঁজে পেলাম আপনার সম্পূর্ণ ক্যোয়ারীটিকে একটি সাবকিউয়েরিতে রেখে দেওয়া এবং এটির বাইরে অতিরিক্ত কলামটি হাতে হাতে তৈরি করা:
SELECT
countrylist.*,
(SELECT TOP 1 city
FROM locations
WHERE
country = countrylist.country
AND city like 'M%'
)
FROM
(SELECT country FROM locations
GROUP BY country) countrylist
ফলাফল হবে:
--country-- --city--
France Marseille
Poland NULL
Italy Milano
SELECT DISTINCT * FROM table
আপনার জন্য কাজ করে না কেন ?