来源:WildestDeram 发布时间:2019-05-10 16:22:37 阅读量:1625
子查询的作用:将一个查询语句嵌套在另一个查询语句中,拥有两层查询结果,内层语句查询的结果可以做为外层语句的查询条件
SELECT 字段名称 FROM tbl_name WHERE col_name=(SELECT col_name FROM tbl_name);
由IN引发的子查询
SELECT * FROM emp
WHERE depId IN (SELECT id FROM dep);
通过改方法就可以忽略了id为7的测试用户,更便捷的查出数据
通过NOT IN取反的方式可以取得id=7的测试用户
SELECT * FROM empWHERE depId NOT IN (SELECT id FROM dep);
CREATE TABLE stu(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT KEY COMMENT '编号',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '学员名称',
score TINYINT UNSIGNED NOT NULL COMMENT '学员考试分数'
);
INSERT stu(username,score) VALUES('king',95),
('queen',75),
('zhangsan',69),
('lisi',78),
('wangwu',87),
('zhaoliu',88),
('tianqi',98),
('ceshi',99),
('tiancai',50);
-- 等级表
CREATE TABLE level(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT KEY COMMENT '编号',
score TINYINT UNSIGNED COMMENT '分数'
);
INSERT level(score) VALUES(90),
(80),
(70);
由比较运算符引出的子查询
SELECT id,username,score FROM stu
WHERE score>=(SELECT score FROM level WHERE id=1);
-- 查询没有得到评级的学员SELECT id,username,score FROM stuWHERE score<=(SELECT score FROM level WHERE id=1);
由EXISTS引发的子查询,使用改关键词查询,内层的查询是不返回查询值的,而是返回Boolean值,EXISTS关键词的作用就是判断内层返回是true还是false。
-- 由EXISTS引发的子查询
SELECT * FROM tbl_name WHERE EXISTS (SELECT tbl_name FROM name WHERE XX);