প্রসারিত বাছাই কী কলামগুলি
আপনি যে কাজটি করতে চান তা হ'ল কারণটি এসকিউএল-এর ক্রিয়াকলাপের যৌক্তিক ক্রম যা আপনার প্রথম ক্যোয়ারির জন্য (সরলীকৃত):
FROM MonitoringJob
SELECT Category, CreationDate
অর্থাত্ একটি তথাকথিত বর্ধিত বাছাই কী কলামটি যুক্ত করুন
ORDER BY CreationDate DESC
SELECT Category
অর্থাত্ পুনরায় ফলাফল থেকে প্রসারিত সাজানোর কী কলামটি সরান ।
সুতরাং, এসকিউএল স্ট্যান্ডার্ড প্রসারিত সাজানোর কী কলামের বৈশিষ্ট্যটির জন্য ধন্যবাদ, এমন কোনও কিছু দ্বারা অর্ডার করা সম্পূর্ণভাবে সম্ভব যা SELECT
শৃঙ্খলে নেই, কারণ এটি সাময়িকভাবে পর্দার আড়ালে এটিতে যুক্ত করা হচ্ছে।
সুতরাং, কেন এই কাজ করে না DISTINCT
?
আমরা যোগ তাহলে DISTINCT
অপারেশন, এটা মধ্যে যোগ করা হবে SELECT
এবং ORDER BY
:
FROM MonitoringJob
SELECT Category, CreationDate
DISTINCT
ORDER BY CreationDate DESC
SELECT Category
তবে এখন, বর্ধিত বাছাই কী কলামটি দিয়ে CreationDate
দিয়ে DISTINCT
অপারেশনের শব্দার্থবিজ্ঞান পরিবর্তন করা হয়েছে, ফলে ফলাফল আর আগের মতো হবে না। এটি আমরা যা চাই তা নয়, সুতরাং এসকিউএল স্ট্যান্ডার্ড এবং সমস্ত যুক্তিসঙ্গত ডাটাবেসই এই ব্যবহারটিকে নিষিদ্ধ করে।
সমাধান নীচে উপস্থিত
এটি নিম্নোক্তভাবে স্ট্যান্ডার্ড সিনট্যাক্স দিয়ে অনুকরণ করা যায়
SELECT Category
FROM (
SELECT Category, MAX(CreationDate) AS CreationDate
FROM MonitoringJob
GROUP BY Category
) t
ORDER BY CreationDate DESC
বা, কেবল সহজভাবে (এই ক্ষেত্রে), যেমন প্রুটউন্ডার দেখিয়েছেন
SELECT Category, MAX(CreationDate) AS CreationDate
FROM MonitoringJob
GROUP BY Category
ORDER BY CreationDate DESC
আমি এখানে এসকিউএল ডিসটিন্ট এবং আরও বিস্তারিতভাবে অর্ডার দিয়ে ব্লগ করেছি ।