SQL必知必会读书笔记11

2020-02-19  本文已影响0人  surrealtire

使用子查询

SQL允许创建子查询(subquery),即嵌套在其他查询中的查询。信息存储在两个表或多个表中。

利用子查询进行过滤

为了演示子查询,新建一个表,并在这个新表中插入一些数据。新建表如下:

CREATE TABLE ICBC(

  -- 主键

  id INT PRIMARY KEY AUTO_INCREMENT,

  -- 客户名称

  kehu_name VARCHAR(200),

  -- 业务类型

  leixing VARCHAR(100),

  -- 业务金额

  money DOUBLE,

  -- 创建日期

  createtime DATE

);

插入数据

INSERT INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (1,'张三','买火车票',500,'2016-05-02');

INSERT  INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (2,'李四','网购',4999,'2016-07-18');

INSERT  INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (3,'王五','充话费',100,'2016-07-21');

INSERT  INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (4,'赵六','股票收入',8000,'2016-10-28');

INSERT  INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (5,'赵六','股票收入',5000,'2016-10-28');

INSERT  INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (6,'赵六','吃饭支出',1000,'2016-10-29');

INSERT  INTO ICBC(id,kehu_name,leixing,money,createtime) VALUES (7,'张三','转账',2000,'2016-10-31');

SELECT * FROM ICBC;-- 列出该表所有信息

使用子查询,因为数据限制,所以下面的操作其实实际意义不大,不过为了演示子查询,使用下面语句:

SELECT zhanghu,flname,money FROM gjp_zhangwu WHERE createtime IN (

SELECT createtime FROM ICBC WHERE kehu_name = '赵六') AND zhanghu = '工商银行';

结果如下:

注意:作为子查询的SELECT语句只能查询单个列,企图检索多个列将返回错误,在实际中使用时由于性能的限制,不能嵌套太多的子查询。

上一篇 下一篇

猜你喜欢

热点阅读