数据库-MySQL-子查询和合并查询

子查询

1 带 In 关键字的子查询:
一个查询语句的条件可能落在另一个 SELECT 语句的查询结果中
eg:

SELECT id FROM t_bookType

它的结果是:
在这里插入图片描述
然后将其作为另外一个查询的子查询:

SELECT * FROM t_book WHERE bookTypeID NOT IN (SELECT id FROM t_bookType) ;

在这里插入图片描述
当然也可以在 IN 前面加 NOT

2 带比较运算符的子查询
子查询可以使用比较运算符。
eg:

SELECT price FROM t_pricelevel WHERE priceLevel = 1;

然后将其作为另外一个查询的子查询:

SELECT * FROM t_book WHERE price >= (SELECT price FROM t_pricelevel WHERE priceLevel = 1);

3 带 Exists 关键字的子查询
假如子查询查询到记录,则进行外层查询,否则,不执行外层查寻
eg:

SELECT * FROM t_bookType

然后将其作为另外一个查询的子查询,如果该查询有查询结果,那么外层查询就执行,否则则不执行

SELECT * FROM t_book WHERE EXISTS (SELECT * FROM t_bookType);

4 带 Any 关键字的子查询
ANY 关键字表示满足其中任一条件则执行外层查询
eg:

SELECT price FROM t_pricelevel WHERE pricelevel >= 2;

然后将其作为另外一个查询的子查询:

SELECT * FROM t_book WHERE price <= ANY (SELECT price FROM t_pricelevel WHERE pricelevel >= 2);

因为后面是一个集合,没有 ANY 是会报错的

5 带 All 关键字的子查询
ALL 关键字表示满足所有条件;与ANY相反



合并查询
1 UNION
使用 UNION 关键字是,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录
eg:

这是查询两个表的id
SELECT id FROM t_book
LL SELECT id FROM t_bookType
用关键字 NUION 合并
SELECT id FROM t_book UNION ALL SELECT id FROM t_bookType;
  1. UNION ALL
    使用 UNION ALL,不会去除掉系统的记录;


另外说一下给表和字段取别名
1 为取别名
格式: 表名 表的别名

2 为字段取别名
格式: 属性名 [AS] 别名 (as可加可不加 0.0)

posted @ 2019-07-06 22:16  整日整夜敲代码  阅读(51)  评论(0)    收藏  举报