1、由In引发的子查询
mysql> -- 查询公开性别的所有员工mysql> SELECT * FROM employee WHERE sex IN (SELECT sex FROM department WHERE sex!='保密' );+----+-----------+------+------+---------+------+-------+| id | username | age | addr | salary | sex | depId |+----+-----------+------+------+---------+------+-------+| 1 | 张三 | 21 | 山东 | 5432.12 | 男 | 1 || 2 | 李四 | 32 | 河北 | 6432.00 | 男 | 2 || 3 | 王五 | 26 | 北京 | 5932.92 | 女 | 3 || 4 | 赵六 | 32 | 上海 | 6232.14 | 男 | 4 || 6 | Mr Adword | 55 | 美国 | 9432.99 | 男 | 4 || 8 | 孙八 | 62 | 上海 | 9932.14 | 男 | 2 || 9 | Mr lili | 45 | 美国 | 9132.99 | 女 | 1 |+----+-----------+------+------+---------+------+-------+
2、由比较运算符引发的子查询
mysql> -- 查询开发部门的所有员工mysql> SELECT * FROM employee WHERE depId = (SELECT id FROM department WHERE depName='开发部');+----+----------+------+------+---------+------+-------+| id | username | age | addr | salary | sex | depId |+----+----------+------+------+---------+------+-------+| 1 | 张三 | 21 | 山东 | 5432.12 | 男 | 1 || 5 | 田七 | 19 | 北京 | 4932.92 | 保密 | 1 || 7 | 田七 | 19 | 北京 | 4932.92 | 保密 | 1 || 9 | Mr lili | 45 | 美国 | 9132.99 | 女 | 1 |+----+----------+------+------+---------+------+-------+
3、由EXISTS引发的子查询
mysql> --如果有设计部门则查询所有员工mysql> SELECT * FROM employee WHERE EXISTS (SELECT id FROM department WHERE depName='设计部');Empty set (0.00 sec)
mysql> --如果有开发部门则查询所有员工mysql> SELECT * FROM employee WHERE EXISTS (SELECT id FROM department WHERE depName='开发部');+----+-----------+------+------+---------+------+-------+| id | username | age | addr | salary | sex | depId |+----+-----------+------+------+---------+------+-------+| 1 | 张三 | 21 | 山东 | 5432.12 | 男 | 1 || 2 | 李四 | 32 | 河北 | 6432.00 | 男 | 2 || 3 | 王五 | 26 | 北京 | 5932.92 | 女 | 3 || 4 | 赵六 | 32 | 上海 | 6232.14 | 男 | 4 || 5 | 田七 | 19 | 北京 | 4932.92 | 保密 | 1 || 6 | Mr Adword | 55 | 美国 | 9432.99 | 男 | 4 || 7 | 田七 | 19 | 北京 | 4932.92 | 保密 | 1 || 8 | 孙八 | 62 | 上海 | 9932.14 | 男 | 2 || 9 | Mr lili | 45 | 美国 | 9132.99 | 女 | 1 |+----+-----------+------+------+---------+------+-------+
4、由ANY|SOME|ALL修饰比较运算符引发的子查
- > 或者 >=ANY 或者 >=SOME 相当于大于子查询中的最小值
- >=ALL 相当于大于子查询中的最大值
- < 或者 <=ANY 或者 <=SOME 相当于大于子查询中的最大值
- <=ALL 相当于大于子查询中的最小值
- =ANY相当于IN (等于的时候只能等于ANY或者SOME)
- <>=ALL相当于NOT IN(不等于的时候只能不等于ALL)