একই টেবিলে দুটি ভিন্ন শর্ত পূরণকারী রো খুঁজে বের করতে সেলফ-জয়েন (Self Join) ব্যবহার করা হয়।
সিনট্যাক্স
SELECT DISTINCT t1.col1, t1.col2, t2.col1, t2.col2 FROM yourTable t1 INNER JOIN yourTable t2 ON t1.commonCol = t2.commonCol WHERE t1.filterCol = 'value1' AND t2.filterCol = 'value2';
উদাহরণ
টেবিল তৈরি ও ডেটা:
CREATE TABLE extractTuples (
Id INT,
Name VARCHAR(20),
Comments TEXT
);
INSERT INTO extractTuples VALUES
(1, 'John', 'hi'),
(2, 'Carol', 'hello'),
(3, 'John', 'Amazing'),
(1, 'Carol', 'Good');
কোয়েরি: Id=1 এবং Name='John' ও 'Carol' উভয় পাওয়া রো
SELECT DISTINCT t1.Id, t1.Name, t2.Id, t2.Name FROM extractTuples t1 INNER JOIN extractTuples t2 ON t1.Id = t2.Id WHERE t1.Name = 'John' AND t2.Name = 'Carol';
ফলাফল
+------+------+------+-------+ | Id | Name | Id | Name | +------+------+------+-------+ | 1 | John | 1 | Carol | +------+------+------+-------+
ব্যাখ্যা: Id=1-এ 'John' এবং 'Carol' উভয় নামই পাওয়া যাচ্ছে, তাই সেটি ফলাফলে আসেছে।