检索至少学过课程号为“C135”和“C219”的学生信息,包括学号、姓名和专业。 select 学号, 姓名, 专业

检索至少学过课程号为“C135”和“C219”的学生信息,包括学号、姓名和专业。
select 学号, 姓名, 专业
from 学生
where 学号 IN (
select 学号
from 学习 x, 学习 y
where x.学号=y.学号 AND x.课程号='C135' AND y.课程号='C219');
这个可以直接不用嵌套查询,from 学习 where 课程号=‘C135' AND 课程号=’C219' ,吗

该回答引用自ChatGPT

以下是使用连接查询的方式实现:


SELECT s.学号, s.姓名, s.专业
FROM 学生 s
JOIN 学习 x ON s.学号 = x.学号 AND x.课程号 = 'C135'
JOIN 学习 y ON s.学号 = y.学号 AND y.课程号 = 'C219';

使用子查询的方式可以这样写:

SELECT s.学号, s.姓名, s.专业
FROM 学生 s
WHERE 学号 IN (
  SELECT 学号
  FROM 学习
  WHERE 课程号 = 'C135'
) AND 学号 IN (
  SELECT 学号
  FROM 学习
  WHERE 课程号 = 'C219'
);