MySQL数据库学习笔记(10)- distinct与in和exists子查询


1. distinct的使用

distinct 用于在查询中返回列的唯一不同值(去重复),支持单列或多列。(只能写在SELECT的后面)

比如,我们想获取员工表中所有的部门,可以将SQL语句写成如下:

SELECT DISTINCT department FROM employee;

2. 子查询in

如果运算符 in 后面的值是来源于某个查询结果,并非是指定的几个值,这是就需要用到子查询。子查询又称为内部查询或嵌套查询,即在SQL查询的WHERE子句中嵌入查询语句。
它的基本形式如下:

SELECT column_name FROM table_name 
	WHERE column_name IN(
	SELECT column_name FROM table_name [WHERE]
);

下面是一个简单的示例,根据表 score 中student_no字段,显示 student 表中的具体学生信息。

SELECT * FROM student 
	WHERE id 
	IN (SELECT student_no FROM score);

3. 子查询exists

exists 是子查询中用于测试内部查询是否返回任何行的布尔运算符。将主查询的数据放到子查询中
做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否保留。

它的一般形式如下:

#where子句使用exists语法
SELECT column_name1 
	FROM table_name1 
	WHERE EXISTS (SELECT * FROM table_name2 WHERE condition);

简单的示例:

select * from 
	student A 
	where exists 
	(select * from score B where A.id = B.student_no and B.course = '线性代数');
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值