केवल अपने इच्छित कॉलम में भिन्न डेटा प्राप्त करने का सबसे आसान तरीका GROUP BY
. का उपयोग करना है खंड। डिफ़ॉल्ट रूप से, यह कॉलम के मान के आधार पर पंक्तियों को समूहीकृत करेगा, केवल अलग-अलग मान दिखाएगा, इसलिए यदि आप केवल अलग-अलग शीर्षक और श्रेणियां समूह और दिखाना चाहते हैं, तो आपको अपनी क्वेरी इस प्रकार लिखनी चाहिए:
SELECT bk.title AS Title, bk.year AS Year, aut.authorname AS Author, cat.category AS Category
FROM book bk
JOIN book_category bk_cat
ON bk_cat.book_id = bk.bookid
JOIN categories cat
ON cat.id = bk_cat.category_id
JOIN books_authors bk_aut
ON bk_aut.book_id = bk.bookid
JOIN authors aut
ON aut.id = bk_aut.author_id
GROUP BY bk.title, cat.category
ORDER BY bk.title ASC
जैसा कि आप देख सकते हैं, कोई DISTINCT
नहीं का उपयोग किया जाता है, लेकिन आपको विशिष्ट शीर्षक और श्रेणियों वाली सभी पुस्तकें मिलेंगी। आपने GROUP BY
में जितने अधिक फ़ील्ड जोड़े हैं खंड, जितना अधिक विशिष्ट डेटा आपको मिलेगा।
उसी तरह, यदि आप केवल शीर्षक के आधार पर पुस्तकों की सूची चाहते हैं, तो आपको GROUP BY
में केवल bk.title छोड़ना चाहिए खंड