SQL初学者求助有一道题不懂

Riani123 2018-04-01 04:41:38
表a
学号 姓名 班级 性别
100101001 张永立 计算机软件 男
100101002 刘晨 计算机应用 女
100101003 王小敏 计算机应用 女
100101004 王小敏 计算机应用 女
100101005 张学成 计算机软件 男
100101006 李明 计算机软件 男
100101007 李明 计算机应用 女
100101008 李明 计算机软件 男
100101009 李明 计算机软件 男
100101010 李小红 计算机应用 男
100101011 李小路 计算机软件 男



问题是要怎么样选出只有男生的班级[/b]
...全文
243 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-04-09
  • 打赏
  • 举报
回复
引用 3 楼 wwfxgm 的回复:
[quote=引用 2 楼 yenange 的回复:]
DECLARE @t TABLE(
	[学号] varchar(10),
	[姓名] nvarchar(10),
	[班级] nvarchar(10),
	[性别] nchar(1)
)
INSERT INTO @t
		  SELECT '100101001','张永立','计算机软件','男'
UNION ALL SELECT '100101002','刘晨','计算机应用','女'
UNION ALL SELECT '100101003','王小敏','计算机应用','女'
UNION ALL SELECT '100101004','王小敏','计算机应用','女'
UNION ALL SELECT '100101005','张学成','计算机软件','男'
UNION ALL SELECT '100101006','李明','计算机软件','男'
UNION ALL SELECT '100101007','李明','计算机应用','女'
UNION ALL SELECT '100101008','李明','计算机软件','男'
UNION ALL SELECT '100101009','李明','计算机软件','男'
UNION ALL SELECT '100101010','李小红','计算机应用','男'
UNION ALL SELECT '100101011','李小路','计算机软件','男'

SELECT 班级 FROM @t b
WHERE NOT EXISTS(
	SELECT 1 FROM @t a WHERE a.班级=b.班级 and a.性别='女'
)
GROUP BY 班级

/*
班级
计算机软件
*/
版主。你这个测试数据自己一个一个打上去的吗?? 应该有什么技巧吧?能否透露一点?[/quote] 有一些可以批量替换, 比如 10 替换成 union all select '10
wwfxgm 2018-04-09
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
DECLARE @t TABLE(
	[学号] varchar(10),
	[姓名] nvarchar(10),
	[班级] nvarchar(10),
	[性别] nchar(1)
)
INSERT INTO @t
		  SELECT '100101001','张永立','计算机软件','男'
UNION ALL SELECT '100101002','刘晨','计算机应用','女'
UNION ALL SELECT '100101003','王小敏','计算机应用','女'
UNION ALL SELECT '100101004','王小敏','计算机应用','女'
UNION ALL SELECT '100101005','张学成','计算机软件','男'
UNION ALL SELECT '100101006','李明','计算机软件','男'
UNION ALL SELECT '100101007','李明','计算机应用','女'
UNION ALL SELECT '100101008','李明','计算机软件','男'
UNION ALL SELECT '100101009','李明','计算机软件','男'
UNION ALL SELECT '100101010','李小红','计算机应用','男'
UNION ALL SELECT '100101011','李小路','计算机软件','男'

SELECT 班级 FROM @t b
WHERE NOT EXISTS(
	SELECT 1 FROM @t a WHERE a.班级=b.班级 and a.性别='女'
)
GROUP BY 班级

/*
班级
计算机软件
*/
版主。你这个测试数据自己一个一个打上去的吗?? 应该有什么技巧吧?能否透露一点?
卖水果的net 版主 2018-04-01
  • 打赏
  • 举报
回复

-- 试试这个 ,未测试
select 班级 
from t 
group by 班级 
having count(*) = sum(case when 性别 = '男' then 1 else 0 end)

吉普赛的歌 版主 2018-04-01
  • 打赏
  • 举报
回复
DECLARE @t TABLE(
	[学号] varchar(10),
	[姓名] nvarchar(10),
	[班级] nvarchar(10),
	[性别] nchar(1)
)
INSERT INTO @t
		  SELECT '100101001','张永立','计算机软件','男'
UNION ALL SELECT '100101002','刘晨','计算机应用','女'
UNION ALL SELECT '100101003','王小敏','计算机应用','女'
UNION ALL SELECT '100101004','王小敏','计算机应用','女'
UNION ALL SELECT '100101005','张学成','计算机软件','男'
UNION ALL SELECT '100101006','李明','计算机软件','男'
UNION ALL SELECT '100101007','李明','计算机应用','女'
UNION ALL SELECT '100101008','李明','计算机软件','男'
UNION ALL SELECT '100101009','李明','计算机软件','男'
UNION ALL SELECT '100101010','李小红','计算机应用','男'
UNION ALL SELECT '100101011','李小路','计算机软件','男'

SELECT 班级 FROM @t b
WHERE NOT EXISTS(
	SELECT 1 FROM @t a WHERE a.班级=b.班级 and a.性别='女'
)
GROUP BY 班级

/*
班级
计算机软件
*/

34,587

社区成员

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

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