Select s* from student s student s2 left join sc c sc c2 on s.sid=1 and s.sid = c.sid and s2.sid =c2.sid group by s.id having count(c.cid)=count(c2.cid);
时间: 2024-04-11 20:30:48 浏览: 80
你的查询语句中存在一些错误。首先,你在选择语句中使用了错误的表别名(s* 应该是 s)。其次,你在 ON 子句中使用了错误的条件(s.sid=1),这可能导致不正确的结果。最后,你在 GROUP BY 子句中使用了错误的列(s.id 应该是 s.sid)。下面是修正后的查询语句:
SELECT s.sid
FROM student s
LEFT JOIN sc c ON s.sid = c.sid
LEFT JOIN student s2 ON s2.sid = c2.sid
GROUP BY s.sid
HAVING COUNT(c.cid) = COUNT(c2.cid);
相关问题
select * from student s left join scodb sco left join course c on s.sid=sco.sid and sco.ceid=c.ceid怎么改
这个SQL查询是用来从三个表(student、scodb和course)中获取信息的,它通过学生的sid连接了scodb表,并进一步通过scodb表的ceid连接了course表。如果想修改查询,可能是为了优化性能、更改列选择或调整连接条件等。这里提供几种可能的情况:
1. **添加别名**:为了使查询更易读,可以给表起别名,例如:
```
SELECT s.*, sco.*, c.*
FROM student AS s
LEFT JOIN scodb AS sco ON s.sid = sco.sid
LEFT JOIN course AS c ON sco.ceid = c.ceid;
```
2. **选择特定列**:如果你只需要部分字段,替换`*`为所需列名,比如:
```
SELECT s.name, sco.score, c.course_name
FROM student s
LEFT JOIN scodb sco ON s.sid = sco.sid
LEFT JOIN course c ON sco.ceid = c.ceid;
```
3. **改变连接条件**:如果需要基于其他列连接,只需修改`ON`后面的条件,如依据课程名称连接:
```
SELECT *
FROM student s
LEFT JOIN scodb sco ON s.sid = sco.sid AND s.class = sco.class
LEFT JOIN course c ON sco.ceid = c.ceid;
```
SELECT s.*, s_score FROM student s JOIN score sc1 ON s.s_id = sc1.s_id AND s.s_class=1 JOIN score sc2 ON s.s_id = sc2.s_id AND s.s_class=2 WHERE sc1.s_score > sc2.s_score;
这是一个 SQL 查询语句,它的作用是查询出在同一学校中,既在1班又在2班的学生中,语文成绩比数学成绩高的学生信息以及他们的语文成绩。其中,student 表记录学生信息,包括学生编号(s_id)、姓名(s_name)和班级(s_class)等字段;score 表记录学生成绩信息,包括学生编号(s_id)、科目名称(c_name)和成绩(s_score)等字段。
阅读全文