查询学全所有课程的同学的信息

qq_32791767 2017-08-24 10:56:00
SELECT a.*

FROM student a

LEFT JOIN sc b

ON a.s=b.s

LEFT JOIN (SELECT COUNT(1) anum FROM course) c

ON 1=1

GROUP BY 1,2,3,4

括号中的SELECT COUNT(1) anum FROM course查询出来的结果只是一个数字
为什么左连接结这个数字表可以查询学完全部课程的学生名单呢?(它只是连接了一个课程总数同一个课程学两次怎么处理)

我的SC表数据如下

或者大家有好的解决办法?
...全文
879 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oqqken12345 2017-08-25
  • 打赏
  • 举报
回复
left join A看成左表,B看成右表,left join是以左表为准的。 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录。
qq_32791767 2017-08-25
  • 打赏
  • 举报
回复
关联了一个数字表(彼此之间没有共同字段)?
二月十六 版主 2017-08-24
  • 打赏
  • 举报
回复
1、没有进行分组,所以查询的是总得数据量,所以只有一条数据。 2、这个左连接没什么意义?为什么要这么写?都没有关联字段,现在看好像应该是里边的按学号分组,外边的通过学号关联
qq_32791767 2017-08-24
  • 打赏
  • 举报
回复
我还是不懂left join 关联里面的select语句是个怎么样的过程 是里面select查出的结果形成一个表,再关联外面的两个表,是这样吗?
qq_39932185 2017-08-24
  • 打赏
  • 举报
回复
--11、查询没有学全所有课程的同学的信息 SELECT a.* FROM student a LEFT JOIN sc b ON a.s=b.s LEFT JOIN (SELECT COUNT(1) anumFROM course) c ON 1=1 GROUP BY 1,2,3,4 HAVING MAX(c.anum)>COUNT(b.c) 那么,你的SQL句子是否少了最后一句

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧