Which one is preferred in between MySQL EXISTS and IN while using in Subqueries?


The EXISTS tells if the query returned results or not while IN can be used for comparing one value with other. IN uses literal values.

Note − IN is preferred in a subquery whenever a subquery result is very small. If the subquery result is very large then EXISTS is used.

Since IN is a preferred choice for subquery results that are smaller, we are considering an example of IN.

To create a table.

mysql> create table InSubQueryDemo
   -> (
   -> PNumber int,
   -> PName varchar(100)
   -> );
Query OK, 0 rows affected (0.60 sec)

Inserting records into the table.

mysql> insert into InSubQueryDemo values(1,'Laptop');
Query OK, 1 row affected (0.17 sec)

mysql>  insert into InSubQueryDemo values(2,'WirelessKeyboard');
Query OK, 1 row affected (0.21 sec)

mysql>  insert into InSubQueryDemo values(3,'WirelessMouse');
Query OK, 1 row affected (0.12 sec)

Displaying all records.

mysql> select *from InSubQueryDemo;

The following is the output.

+---------+------------------+
| PNumber | PName            |
+---------+------------------+
|       1 | Laptop           |
|       2 | WirelessKeyboard |
|       3 | WirelessMouse    |
+---------+------------------+
3 rows in set (0.00 sec)

The following is the syntax for IN, that includes a subquery to fetch “PNumber” greater than 1.

mysql> select *from InSubQueryDemo
   -> where PNumber IN (select PNumber from InSubQueryDemo  WHERE PNumber > 1);

Here is the output.

+---------+------------------+
| PNumber | PName            |
+---------+------------------+
|       2 | WirelessKeyboard |
|       3 | WirelessMouse    |
+---------+------------------+
2 rows in set (0.04 sec)

Updated on: 30-Jul-2019

44 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements