Mysql Nested Select
Mysql Nested Select is a SELECT query that is nested within a Select, Update, Insert or Delete SQL query.
Understand with Example:
The Tutorial illustrate an example from 'MySQL Nested Select'. To understand and elaborate example we create a table 'MyTable' that has the required fieldnames and datatypes respectively.
Query for creating table:
mysql> CREATE TABLE MyTable ( -> Empid int(10), -> Empname varchar(60) -> Salary int(90) -> ); Query OK, 0 rows affected (0.13 sec) |
Query for inserting data in table:
The Query insert into adds the records to the table 'MyTable'.
mysql> insert into MyTable values(01,'Girish','20000'); Query OK, 1 row affected (0.02 sec) mysql> insert into MyTable values(02,'A','21000'); Query OK, 1 row affected (0.01 sec) mysql> insert into MyTable values(03,'C','22000'); Query OK, 1 row affected (0.00 sec) mysql> insert into MyTable values(04,'V','23000'); Query OK, 1 row affected (0.00 sec) mysql> insert into MyTable values(05,'B','24000'); Query OK, 1 row affected (0.00 sec) mysql> insert into MyTable values(06,'E','25000'); Query OK, 1 row affected (0.00 sec) mysql> insert into MyTable values(07,'Q','26000'); Query OK, 1 row affected (0.01 sec) mysql> insert into MyTable values(08,'W','27000'); Query OK, 1 row affected (0.01 sec) mysql> insert into MyTable values(09,'AS','28000'); Query OK, 1 row affected (0.00 sec)` |
Query to view data inserted in table:
The Query is used to return the detail of the records from table 'mytable'.
mysql> select * from mytable; +-------+---------+--------+ | Empid | Empname | Salary | +-------+---------+--------+ | 1 | Girish | 20000 | | 2 | A | 21000 | | 3 | C | 22000 | | 4 | V | 23000 | | 5 | B | 24000 | | 6 | E | 25000 | | 7 | Q | 26000 | | 8 | W | 27000 | | 9 | AS | 28000 | +-------+---------+--------+ 9 rows in set (0.01 sec) |
Query for creating table name Employee:
We create another table 'Employee' that has the required fieldnames and datatypes respectively.
mysql> CREATE TABLE Employee( -> Empid int(10), -> Empname varchar(60), -> Salary int(90), -> DOB date -> ); Query OK, 0 rows affected (0.01 sec) |
Query for insertion of data in table:
The Query insert into adds the records or rows to the table 'Employee'.
mysql> INSERT INTO Employee (Empid,Empname,Salary,DOB) VALUES -> (01,'Habib',2014,20041202), -> (02,'Karan',4021,20030411), -> (03,'Samia', 22,20080223), -> (04,'Hui Ling', 25,20081015), -> (05,'Yumie', 29,19990126); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 |
Query to view data inserted in table:
mysql> select * from employee; |
Output:
+-------+----------+--------+------------+ | Empid | Empname | Salary | DOB | +-------+----------+--------+------------+ | 1 | Habib | 2014 | 2004-12-02 | | 2 | Karan | 4021 | 2003-04-11 | | 3 | Samia | 22 | 2008-02-23 | | 4 | Hui Ling | 25 | 2008-10-15 | | 5 | Yumie | 29 | 1999-01-26 | +-------+----------+--------+------------+ 5 rows in set (0.00 sec) |
Query for Mysql nested select:
The Nested Query is used to return those records from 'mytable' which are nested select query of table employee in the Where Clause.
mysql> SELECT * FROM mytable WHERE Empid in(SELECT Empid FROM employee); |
Output:-
+-------+---------+--------+ | Empid | Empname | Salary | +-------+---------+--------+ | 1 | Girish | 20000 | | 2 | A | 21000 | | 3 | C | 22000 | | 4 | V | 23000 | | 5 | B | 24000 | +-------+---------+--------+ 5 rows in set (0.00 sec) |