MYSQL-子查询

300 阅读1分钟
  • 子查询

结合关键字IN所使用的子查询主要用于判断一个给定值是否存在于子查询的结果集中。其语法格式为:

<表达式> [NOT] IN <子查询>
  • 在tb_departments表中查询dept_type为A的学院ID,并根据学院ID查询该学院学生的名字,输入的SQL语句和执行结果如下所示。
SELECT name FROM tb_students_info WHERE dept_id IN (SELECT dept_id FROM tb_departments WHERE dept_type='A');

SELECT name FROM tb_students_info WHERE dept_id NOT IN (SELECT dept_id FROM tb_departments WHERE dept_type='A');

  • 在tb_departments表中查询dept_name不等于“Computer”的学院id,然后在tb_students_info表中查询所有该学院的学生的姓名,输入的SQL语句和执行过程如下所示。
SELECT name FROM tb_students_info WHERE dept_id <> (SELECT dept_id FROM tb_departments WHERE dept_name='Computer');

  • 查询tb_departments表中是否存在dept_id=1的供应商,如果存在,就查询tb_students_info表中的记录,输入的SQL语句和执行结果如下所示。
SELECT * FROM tb_students_info WHERE EXISTS (SELECT dept_name FROM tb_departments WHERE dept_id=1);

内层查询结果为真,则对外层进行查询