mysql 获取2个表的不包含部分

jiaoshiyao 2019-08-01 08:57:09
有一个成绩表score(学生id,科目id,成绩)和一个科目表course(科目id,科目名称),关联为c_id int类型的,目前的需求是找出(未学全所有科目的学生)
如何实现这个需求,注意要查询出学生id做最后的输出
...全文
343 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2019-08-02
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([学生] nvarchar(23),[课程] nvarchar(22),[分数] nvarchar(23))
Insert #T
select N'学生1',N'语文',N'10分' union all
select N'学生1',N'数学',N'30分' union all
select N'学生1',N'英语',N'50分' union all
select N'学生2',N'语文',N'10分' union all
select N'学生2',N'数学',N'30分' union all
select N'学生3',N'语文',N'10分' union all
select N'学生3',N'数学',N'30分' union all
select N'学生3',N'英语',N'50分'
Go
--测试数据结束
SELECT DISTINCT #T.学生 FROM #T JOIN (
Select * from #T WHERE 学生='学生1'
)t ON t.课程 = #T.课程 AND t.学生 <> #T.学生
GROUP BY #T.学生 HAVING COUNT(1) =  (Select COUNT(1) from #T WHERE 学生='学生1')

SELECT DISTINCT #T.学生 FROM #T 
GROUP BY #T.学生 HAVING COUNT(1) <> (Select COUNT(1) from #T WHERE 学生='学生1')
二月十六 2019-08-01
  • 打赏
  • 举报
回复
mssql写的,和mysql差不多
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([学生] nvarchar(23),[课程] nvarchar(22),[分数] nvarchar(23))
Insert #T
select N'学生1',N'语文',N'10分' union all
select N'学生1',N'数学',N'30分' union all
select N'学生1',N'英语',N'50分' union all
select N'学生2',N'语文',N'10分' union all
select N'学生2',N'数学',N'30分' union all
select N'学生3',N'语文',N'10分' union all
select N'学生3',N'数学',N'30分' union all
select N'学生3',N'英语',N'50分'
Go
--测试数据结束
SELECT DISTINCT #T.学生 FROM #T JOIN (
Select * from #T WHERE 学生='学生1'
)t ON t.课程 = #T.课程 AND t.学生 = #T.学生
GROUP BY #T.学生 HAVING COUNT(1) =  (Select COUNT(1) from #T WHERE 学生='学生1')

SELECT DISTINCT #T.学生 FROM #T 
GROUP BY #T.学生 HAVING COUNT(1) <> (Select COUNT(1) from #T WHERE 学生='学生1')
jiaoshiyao 2019-08-01
  • 打赏
  • 举报
回复
还有判断2个表的分组信息是否相等的一个需求 查询和A学生报考科目完全相同的所有人
jiaoshiyao 2019-08-01
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
楼主这个能给一些测试数据和对应想要的结果吗?
获取2个表的并集、差集(我也不太懂名字怎么叫) --------------------------------- 成绩表,5条数据 学生1 语文 10分 学生1 数学 30分 学生1 英语 50分 学生2 语文 10分 学生2 数学 30分 学生3 语文 10分 学生3 数学 30分 学生3 英语 50分 学科表3条数据 语文 数学 英语 问题1:找出与学生1所学科目完全相同的学生(学生1学了语文数学英语,找出学生3) 问题2:找出与学生1所学科目不相同的学生(找出学生2)
二月十六 2019-08-01
  • 打赏
  • 举报
回复
楼主这个能给一些测试数据和对应想要的结果吗?
打开链接下载源码: https://pan.quark.cn/s/7df8a7defca4 依据所提供的文件材料,以下是对丰田TechStream软件安装注册指导手册中相关内容的详尽阐述:1. 安装系统需求:文档内明确列出了支持系统及推荐的计算机配置。TechStream软件所兼容的操作系统包括Windows XP 32位(专业版版本)、Windows 7(无论是32位还是64位版本,涵盖专业版、企业版、旗舰版)、Windows 10(同样支持32位与64位的同系列版本)。在Windows 10环境下,建议显示比例设置为100%。具体的硬件需求包含:- 系统内存至少需要2GB,推荐使用4GB或更高配置。- 硬盘需预留至少4GB的安装空间,但建议有5GB或更大的容量。- 中央处理器速度至少达到1.5Ghz或以上。- 需要稳定的网络连接,并支持USB接口(涵盖USB 1.0、2.0、3.0标准)。- 显示颜色深度至少为24位,分辨率不得低于1024*768(在Windows 10下,当使用100%显示比例时)。- 需要安装IE7或更新版本的浏览器。- 需要安装Adobe Flash Player 11或更高版本、Java Version 7或更高版本、Adobe Reader 7或更高版本。2. TechStream软件安装流程:安装流程涉及几个关键环节:- 应当以管理员身份通过右键点击安装文件来启动程序,比如Techstream_Setup_V14.20.019.exe。- 完成安装后,需要重启计算机设备。- 运行桌面上的Techstream.exe来启动软件,进行地区设置并选择语言(可选择默认设置或中文)。- 完成注册与激活软件,必须记录下“软件标识”并发送该信息以...

57,065

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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