distinct 用于在查询中返回列的唯一不同值(去重复),支持单列或多列。(只能写在SELECT的后面)
比如,我们想获取员工表中所有的部门,可以将SQL语句写成如下:
SELECT DISTINCT department FROM employee;
如果运算符 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);
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 = '线性代数');