লেখার সবচেয়ে সহজ ক্যোয়ারী হ'ল মাইএসকিউএল (কঠোর এএনএসআই সেটিংস সহ নয়)। এটি অ-মানক নির্মাণ ব্যবহার করে:
SELECT key, value
FROM tableX
GROUP BY key ;
সাম্প্রতিক সংস্করণে (5.7 এবং 8.0+) যেখানে কঠোর সেটিংস এবং ONLY_FULL_GROUP_BY
ডিফল্ট, আপনি ANY_VALUE()
ফাংশনটি ব্যবহার করতে পারেন , 5.7-এ যুক্ত করেছেন:
SELECT key, ANY_VALUE(value) AS value
FROM tableX
GROUP BY key ;
অন্যান্য ডিবিএমএস-এর জন্য, যেগুলির উইন্ডো ফাংশন রয়েছে (যেমন পোস্টগ্রিস, এসকিউএল-সার্ভার, ওরাকল, ডিবি 2), আপনি তাদের এটি ব্যবহার করতে পারেন। সুবিধাটি হ'ল আপনি ফলাফলের অন্যান্য কলামও নির্বাচন করতে পারেন (পাশাপাশি key
এবং value
):
SELECT key, value
FROM tableX
( SELECT key, value,
ROW_NUMBER() OVER (PARTITION BY key
ORDER BY whatever) --- ORDER BY NULL
AS rn --- for example
FROM tableX
) tmp
WHERE rn = 1 ;
উপরের পুরানো সংস্করণগুলির জন্য এবং অন্য কোনও ডিবিএমএসের জন্য, একটি সাধারণ উপায় যা প্রায় সর্বত্র কাজ করে। একটি অসুবিধা হ'ল আপনি এই পদ্ধতির সাহায্যে অন্যান্য কলামগুলি নির্বাচন করতে পারবেন না। আর একটি হ'ল কিছু ডিবিএমএসে (যেমন বিট, পাঠ্য, ব্লবস) কিছু ডেটাটাইপগুলির মতো সামগ্রিক ফাংশনগুলি কাজ করে MIN()
এবং MAX()
কাজ করে না:
SELECT key, MIN(value) AS value
FROM tableX
GROUP BY key ;
PostgreSQL এর একটি বিশেষ অ-মানক DISTINCT ON
অপারেটর রয়েছে যা ব্যবহার করা যায়। ঐচ্ছিক ORDER BY
নির্বাচন যা প্রতি গ্রুপ থেকে সারি নির্বাচন করতে হবে জন্য:
SELECT DISTINCT ON (key) key, value
FROM tableX
-- ORDER BY key, <some_other_expressions> ;