检查 SELECT s.* FROM student s, student s2 LEFT JOIN sc c ON s.sid = c.sid LEFT JOIN sc c2 ON s2.sid = c2.sid WHERE s.sid = 1 GROUP BY s.id HAVING COUNT(c.cid) = COUNT(c2.cid);
时间: 2024-04-11 20:30:49 浏览: 7
你的查询语句有一些问题。首先,你使用了旧的隐式连接语法(FROM student s, student s2),这在现代 SQL 中不推荐使用。其次,你在 WHERE 子句中使用了错误的条件(s.sid = 1),这可能导致不正确的结果。最后,你在 GROUP BY 子句中使用了错误的列(s.id 应该是 s.sid)。下面是修正后的查询语句:
SELECT s.*
FROM student s
LEFT JOIN sc c ON s.sid = c.sid
LEFT JOIN sc c2 ON s.sid = c2.sid
GROUP BY s.sid
HAVING COUNT(c.cid) = COUNT(c2.cid);
相关问题
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);
你的查询语句中存在一些错误。首先,你在选择语句中使用了错误的表别名(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 course.Cname,teacher.Tname,sc.CId,student.Ssex FROM course JOIN teacher ON course.CId = teacher.TId LEFT JOIN sc JOIN student ON sc.SId=student.SId;这个语句有什么问题
这个 SQL 语句存在一些问题:
1. 在 LEFT JOIN sc JOIN student ON sc.SId=student.SId 中,缺少 ON 关键字,应该改为 LEFT JOIN sc ON sc.CId = course.CId AND sc.TId = teacher.TId JOIN student ON sc.SId = student.SId。这样才能正确指定 LEFT JOIN 的条件。
2. SELECT 语句中没有指定使用哪个表的 CId 字段,应该改为 SELECT course.CId, course.Cname, teacher.Tname, student.Ssex。
3. JOIN 多个表时,应该明确指定每个表的关联条件,否则会出现笛卡尔积的情况。
因此,正确的 SQL 语句应该是:
```
SELECT course.CId, course.Cname, teacher.Tname, student.Ssex
FROM course
JOIN teacher
ON course.CId = teacher.TId
LEFT JOIN sc
ON sc.CId = course.CId AND sc.TId = teacher.TId
JOIN student
ON sc.SId = student.SId;
```