আপনি ব্যবহার করতে পারেন 4 টি পদ্ধতি:
- DISTINCT
- গ্রুপ দ্বারা
- সাবকিউরি
- ROW_NUMBER () সহ সাধারণ সারণী এক্সপ্রেশন (সিটিই)
TABLEপরীক্ষার ডেটা সহ নিম্নলিখিত নমুনাটি বিবেচনা করুন :
CREATE TEMPORARY TABLE dupes(word text, num int, id int);
INSERT INTO dupes(word, num, id)
VALUES ('aaa', 100, 1)
,('bbb', 200, 2)
,('ccc', 300, 3)
,('bbb', 400, 4)
,('bbb', 200, 5)
,('ccc', 300, 6)
,('ddd', 400, 7)
,('bbb', 400, 8)
,('aaa', 100, 9)
,('ccc', 300, 10);
বিকল্প 1: নির্বাচন নির্বাচন করুন
এটি সর্বাধিক সহজ এবং সোজা এগিয়ে, তবে সীমাবদ্ধতম উপায়:
SELECT DISTINCT word, num
FROM dupes
ORDER BY word, num;
বিকল্প 2: গ্রুপ দ্বারা
গোষ্ঠীবদ্ধ আপনি সমষ্টিগত তথ্য যোগ করার জন্য, মত দেয় min(id), max(id), count(*), ইত্যাদি:
SELECT word, num, min(id), max(id), count(*)
FROM dupes
GROUP BY word, num
ORDER BY word, num;
বিকল্প 3: উপশক্তি
সাবকিউরি ব্যবহার করে, আপনি প্রথমে অনুলিপি করার জন্য সদৃশ সারিগুলি সনাক্ত করতে পারেন, এবং তারপরে এগুলি WHERE NOT IN (subquery)নির্মাণের সাথে বাহ্যিক ক্যোয়ারিতে ফিল্টার করতে পারেন :
SELECT distinct d2.id
FROM dupes d1
INNER JOIN dupes d2 ON d2.word=d1.word AND d2.num=d1.num
WHERE d2.id > d1.id
SELECT *
FROM dupes
WHERE id NOT IN (
SELECT d2.id
FROM dupes d1
INNER JOIN dupes d2 ON d2.word=d1.word AND d2.num=d1.num
WHERE d2.id > d1.id
)
ORDER BY word, num;
বিকল্প 4: ROW_NUMBER () সহ সাধারণ সারণী এক্সপ্রেশন
সাধারণ সারণী এক্সপ্রেশন (সিটিই) এ, গ্রুপ কলাম দ্বারা বিভাজনিত এবং পছন্দসই ক্রমে অর্ডার করা ROW_NUMBER () নির্বাচন করুন। তারপরে কেবলমাত্র রেকর্ডগুলি নির্বাচন করুন ROW_NUMBER() = 1:
WITH CTE AS (
SELECT *
,row_number() OVER(PARTITION BY word, num ORDER BY id) AS row_num
FROM dupes
)
SELECT word, num, id
FROM cte
WHERE row_num = 1
ORDER BY word, num;