数据库MYSQL学习总结26—子查询的使用

版权声明:. https://blog.csdn.net/WildestDeram/article/details/89455049

子查询的作用:将一个查询语句嵌套在另一个查询语句中,拥有两层查询结果,内层语句查询的结果可以做为外层语句的查询条件

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 emp
WHERE 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 stu
WHERE 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);

猜你喜欢

转载自blog.csdn.net/WildestDeram/article/details/89455049