
- Learn MySQL
- MySQL - Home
- MySQL - Introduction
- MySQL - Installation
- MySQL - Administration
- MySQL - PHP Syntax
- MySQL - Connection
- MySQL - Create Database
- MySQL - Drop Database
- MySQL - Select Database
- MySQL - Data Types
- MySQL - Create Tables
- MySQL - Drop Tables
- MySQL - Insert Query
- MySQL - Select Query
- MySQL - Where Clause
- MySQL - Update Query
- MySQL - Delete Query
- MySQL - Like Clause
- MySQL - Sorting Results
- MySQL - Using Join
- MySQL - NULL Values
- MySQL - Regexps
- MySQL - Transactions
- MySQL - Alter Command
- MySQL - Indexes
- MySQL - Temporary Tables
- MySQL - Clone Tables
- MySQL - Database Info
- MySQL - Using Sequences
- MySQL - Handling Duplicates
- MySQL - SQL Injection
- MySQL - Database Export
- MySQL - Database Import
How can we convert subqueries to INNER JOIN?
To make it understand we are using the data from the following tables −
mysql> Select * from customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ 4 rows in set (0.00 sec) 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 | +------+------------+ 5 rows in set (0.00 sec)
Now, the following is a subquery which will find the name of all the customers who have reserved a car.
mysql> Select Name from customers WHERE customer_id IN (Select id from reserve); +----------+ | Name | +----------+ | Rahul | | Yashpal | | Gaurav | +----------+ 3 rows in set (0.00 sec)
Now, with the help of followings steps, we can convert the above subquery into inner join −
Move the ‘Reserve’ table named in the subquery to the FROM clause.
The WHERE clause compares the customer_id column to the ids returned from the subquery.
Hence convert the expression to an explicit direct comparison between id columns of two tables.
mysql> SELECT Name from customers, reserve WHERE customer_id = id; +----------+ | Name | +----------+ | Rahul | | Yashpal | | Yashpal | | Rahul | | Gaurav | +----------+ 5 rows in set (0.00 sec)
As we can see that the above result is not exactly the same as the result of subquery so use DISTINCT keyword to get the same result as follows:
mysql> SELECT DISTINCT name from customers,reserve WHERE customer_id = id; +----------+ | Name | +----------+ | Rahul | | Yashpal | | Gaurav | +----------+ 3 rows in set (0.03 sec)
- Related Articles
- How can we convert subqueries to RIGHT JOIN?
- How can we convert subqueries to LEFT JOIN?
- How can we distinguish between MySQL CROSS JOIN and INNER JOIN?
- How can we create a MySQL view with INNER JOIN?
- How can we write MySQL query for inner joins with the help of keyword JOIN?
- How can you perform inner join on two tables using MySQL in Python?
- How to do an inner join and outer join of two data frames in R?
- Difference Between Inner Join and Outer Join in SQL
- INNER JOIN vs FULL OUTER JOIN vs LEFT JOIN vs RIGHT JOIN in PostgreSQL?
- How can we create a MySQL view with LEFT JOIN?
- How can we create a MySQL view with RIGHT JOIN?
- Python - Merge Pandas DataFrame with Inner Join
- How can we convert list to Set in Java?
- Difference between Inner and Outer join in SQL
- How to convert string Stream to join them in Java?

Advertisements