একই টেবিলগুলো ব্যবহার করে (customers, reserve) সাবকোয়েরি INNER JOIN-এ রূপান্তর:
mysql> Select * from customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ mysql> Select * from reserve; +------+------------+ | ID | Day | +------+------------+ | 1 | 2017-12-30 | | 2 | 2017-12-28 | | 2 | 2017-12-25 | | 1 | 2017-12-24 | | 3 | 2017-12-26 | +------+------------+
সাবকোয়েরি: রিজারভেশন করে থাকা কাস্টমার বের করা।
mysql> Select Name from customers WHERE customer_id IN (Select id from reserve); +----------+ | Name | +----------+ | Rahul | | Yashpal | | Gaurav | +----------+
INNER JOIN-এ রূপান্তর:
ReserveটেবিলকেFROMক্লজে আনুন।WHEREক্লজেcustomer_idকেid-এর সাথে সরাসরি তুলনা করুন (JOIN কন্ডিশন)।
mysql> SELECT Name from customers, reserve WHERE customer_id = id; +----------+ | Name | +----------+ | Rahul | | Yashpal | | Yashpal | | Rahul | | Gaurav | +----------+
ফলাফলে ডুপ্লিকেট রো আছে (Yashpal, Rahul দুবার)। সেম রেজাল্ট পেতে DISTINCT ব্যবহার:
mysql> SELECT DISTINCT name from customers,reserve WHERE customer_id = id; +----------+ | Name | +----------+ | Rahul | | Yashpal | | Gaurav | +----------+
ব্যাখ্যা: INNER JOIN শুধু ম্যাচিং রো রিটার্ন করে। কমা (,) জয়িন সিনট্যাক্স পুরনো স্টাইল, আধুনিক সিনট্যাক্স হলো INNER JOIN ... ON। DISTINCT ডুপ্লিকেট সরিয়ে সাবকোয়েরির মত একক রো নিশ্চিত করে।