select student.s_name from student, (select DISTINCT st.s_name from score sc inner JOIN student st ON st.s_id =sc.s_id INNER JOIN course c ON sc.c_id=c.c_id) demo1 LEFT JOIN student ON student.s_name = demo1.s_name为什么报错
时间: 2024-03-03 18:48:39 浏览: 71
SQL_select.rar_sql 语法
这个查询语句的问题在于它使用了 demo1 表作为左连接的一部分,但是在这个查询语句中 demo1 表是一个子查询的结果,不能直接使用。正确的做法是将子查询的结果作为一个临时表,然后再使用该表进行左连接。
修改后的查询语句如下:
```
SELECT student.s_name FROM student LEFT JOIN
(SELECT DISTINCT st.s_name FROM score sc
INNER JOIN student st ON st.s_id = sc.s_id
INNER JOIN course c ON sc.c_id = c.c_id) AS demo1
ON student.s_name = demo1.s_name;
```
这个查询语句使用了 AS 关键字将子查询的结果集命名为 demo1,然后在主查询中使用 demo1 进行左连接,最终得到的结果是一个包含选修了课程的学生姓名的集合。
阅读全文