MySQL-এ দুটি কলাম থেকে অর্ডার-ইনডিপেন্ডেন্ট ডিস্টিংক্ট কম্বিনেশন (যেমন: (a,b) এবং (b,a) একই মনে করা) বের করতে CASE স্টেটমেন্ট ব্যবহার করুন।
উদাহরণ
টেবিল তৈরি করি:
mysql> create table select_DistinctTwoColumns
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> FirstValue CHAR(1),
-> SecondValue CHAR(1),
-> PRIMARY KEY(Id)
-> ); Query OK, 0 rows affected (0.57 sec)
রেকর্ড যোগ করি:
mysql> insert into select_DistinctTwoColumns(FirstValue,SecondValue) values('s','t');
mysql> insert into select_DistinctTwoColumns(FirstValue,SecondValue) values('t','u');
mysql> insert into select_DistinctTwoColumns(FirstValue,SecondValue) values('u','v');
mysql> insert into select_DistinctTwoColumns(FirstValue,SecondValue) values('u','t');
সকল রেকর্ড
mysql> select *from select_DistinctTwoColumns;
আউটপুট
+----+------------+-------------+ | Id | FirstValue | SecondValue | +----+------------+-------------+ | 1 | s | t | | 2 | t | u | | 3 | u | v | | 4 | u | t | +----+------------+-------------+
লক্ষ্য করুন: (s,t) এবং (t,s) একই কম্বিনেশন। (u,t) রো ৪ (t,u) রো ২-এর ডুপ্লিকেট।
CASE দিয়ে ডিস্টিংক্ট কম্বিনেশন বের করুন
mysql> SELECT DISTINCT
-> CASE WHEN FirstValue < SecondValue THEN FirstValue ELSE SecondValue END AS FirstColumn,
-> CASE WHEN FirstValue > SecondValue THEN FirstValue ELSE SecondValue END AS SecondColumn
-> FROM select_DistinctTwoColumns;
ফলাফল
+-------------+--------------+ | FirstColumn | SecondColumn | +-------------+--------------+ | s | t | | t | u | | u | v | +-------------+--------------+ 3 rows in set (0.00 sec)
ব্যাখ্যা: ছোট মান সবসময় FirstColumn-এ, বড় মান SecondColumn-এ আসে, তাই (s,t) এবং (t,s) একই হয়ে যায়।