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

来源:WildestDeram 发布时间:2019-05-10 16:22:37 阅读量:1233

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


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);



标签: PHP 数据库
分享:
评论:
你还没有登录,请先