虽然我理解子查询的基本定义,但我很难应用它。下面列出了我尝试获得 A 但没有成功的一些尝试。我做错了什么?
A.查找至少参加过一门 Comp 课程的每个学生的 ID 和姓名。科学。课程;确保结果中没有重复的名称
选择不同的
ID
,name
来自 student
WHERE dept_name >= 'comp.sci.'
错了
选择不同的
ID
,名称,部门名称
来自 student
WHERE dept_name > SOME IN (SELECT ID, name, dept_name FROM Student WHERE dept_name = 'comp.sci.')
错了
选择不同的 S.
ID
S.name
来自学生
JOIN 在 T.ID= S.ID 上取 T
WHERE dept_name IN (SELECT ID, name FROM gets WHERE dept_name = 'comp.sci.')
错了
一点一点地构建它。
create table students (id numeric, name text, dept_name text);
insert into students values
(1, 'alice', 'comp.sci.java'),
(2, 'bob', 'comp.sci.php'),
(3, 'eve', 'metaphysics');
您可以单独运行子查询:
SELECT dept_name FROM student WHERE dept_name like 'comp.sci.%';
然后尝试在一个简单的子选择中使用它:
SELECT dept_name FROM
(SELECT dept_name FROM student WHERE dept_name like 'comp.sci.%');
并延伸到你的目标:
SELECT DISTINCT ID, name, dept_name
FROM student
WHERE dept_name IN
(SELECT dept_name FROM student WHERE dept_name like 'comp.sci.%');