SQL Server 2016 表操作:子查询

  • IN 表达式
SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2, 值3,...);
  • NOT IN 表达式
SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2, 值3,...);

示例

-- IN
SELECT * FROM Student WHERE name IN ('name1','name2','管理员');

-- NOT IN
SELECT * FROM Student WHERE name NOT IN ('name1','name2','管理员');
image.png
  • 通过 IN / NOT IN 实现多表查询

需求:有 Student、Score 两张表,分别标识学生和分数,Score 从表的 StudentID 字段为外键,对应 Student 主表的 ID 字段,Student 表 ID 在 Score 表的 StudentID 中说明这个学生有成绩,不在其中的说明没有成绩,现在要查询所有有成绩的学生信息

-- 查询有分数的学生
SELECT * FROM Student WHERE ID IN (SELECT StudentID FROM Score);
image.png
  • EXISTS
SELECT a.name,a.age FROM Student as a WHERE EXISTS (SELECT * FROM Score as b WHERE a.ID=b.StudentID);
image.png

你可能感兴趣的:(SQL Server 2016 表操作:子查询)