mysql 的DISTINCT、EXISTS、IN、GROUP BY..HAVING 用法记录

mysql 的DISTINCT (去掉重复)
mysql 的EXISTS (存在于、 条件的字段,值均在括号中)
mysql 的IN (在、 条件字段的在括号前,条件值在括号中)
mysql 的GROUP BY..HAVING(分组,把字段值相同的统计出来,having 统计个数限制条件)GROUP BY..HAVING结合使用


SELECT * from class;

SELECT * from students;

SELECT * from  sc;


# 查询选修c02课程的学生信息
SELECT s.sid,s.sname,c.cid from students as s
 LEFT JOIN sc as c on s.sid = c.sid where c.cid = "c02";

# 查询选修c02课程的学生信息
SELECT c.cid,s.sname,s.sid from sc as c LEFT JOIN students as s on s.sid=c.sid where c.cid = "c03";


#关系中间表里 查询选修了课程的学生人数 利用DISTINCT
SELECT count(DISTINCT sid) from sc;

 #关系中间表里 查询选修了课程的学生人数 利用EXISTS
SELECT COUNT(sid) FROM students as s WHERE EXISTS( SELECT * FROM sc WHERE sc.sid = s.sid );

# 查询选修课程超过2门的学生姓名 利用In
select s.sid,s.sname from students as s where s.sid IN (
  SELECT sid from sc GROUP BY sid HAVING count(sid)>=2);

# 查询选修课程超过2门的学生姓名 利用EXISTS
select s.sid,s.sname from students as s where EXISTS (
  SELECT sid from sc where sc.sid = s.sid GROUP BY sid HAVING count(sid)>=2);

# SELECT sid,count(sid) from sc GROUP BY sid HAVING count(sid)>2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值