MySQL-এ একাধিক কলামের কম্বিনেশন দিয়ে ফিল্টার করতে WHERE ক্লজে টাপল (tuple) কম্পারিশন বা OR অপারেটর ব্যবহার করা হয়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(10),
-> Score INT
-> );
mysql> INSERT INTO DemoTable(Name, Score) VALUES('John', 80);
mysql> INSERT INTO DemoTable(Name, Score) VALUES('John', 90);
mysql> INSERT INTO DemoTable(Name, Score) VALUES('Carol', 89);
mysql> INSERT INTO DemoTable(Name, Score) VALUES('John', 86);
mysql> INSERT INTO DemoTable(Name, Score) VALUES('Carol', 98);
mysql> INSERT INTO DemoTable(Name, Score) VALUES('David', 99);
সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable;
+----+-------+-------+
| Id | Name | Score |
+----+-------+-------+
| 1 | John | 80 |
| 2 | John | 90 |
| 3 | Carol | 89 |
| 4 | John | 86 |
| 5 | Carol | 98 |
| 6 | David | 99 |
+----+-------+-------+
টাপল কম্পারিশন দিয়ে ফিল্টার (Name, Score) জোড়া মিলিয়ে
mysql> SELECT * FROM DemoTable
-> WHERE (Name, Score) = ('John', 90)
-> OR (Name, Score) = ('Carol', 98);
ফলাফল
+----+-------+-------+
| Id | Name | Score |
+----+-------+-------+
| 2 | John | 90 |
| 5 | Carol | 98 |
+----+-------+-------+
ব্যাখ্যা: (Name, Score) = ('John', 90) সিনট্যাক্সটি MySQL-এ টাপল কম্পারিশন হিসেবে কাজ করে। এটি একই সময় Name='John' AND Score=90 চেক করে।
বিকল্প পদ্ধতি: AND/OR ব্যবহার
SELECT * FROM DemoTable
WHERE (Name = 'John' AND Score = 90)
OR (Name = 'Carol' AND Score = 98);
দুটি পদ্ধতির ফলাফল একই। টাপল সিনট্যাক্স আরও সংক্ষিপ্ত এবং পড়তে সহজ।
IN অপারেটর দিয়ে একাধিক টাপল (MySQL 8.0+)
SELECT * FROM DemoTable
WHERE (Name, Score) IN (('John', 90), ('Carol', 98), ('David', 99));
নোট: এই ফিচার MySQL 8.0.13+ এ উপলব্ধ। পুরনো ভার্সনে টাপল IN সাপোর্ট করে না।