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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容