MySQL子查询

为什么要使用子查询

在MySQL软件中虽然可以通过连接査询实现多表查询数据记录,但是却不建议使用。这是因为连接査询的性能很差。因此出现了连接査询的替代者子査询。在具体开发应用中,MySQL软件推荐使用子查询来实现多表査询数据记录。
对于新手,直接会执行如下SQL语句进行査询:
SELECT * FROM t_dept t,t_employee L WHERE t.deptno=L.deptno;
上述SQL语句在执行过程中,首先会对两个表进行笛卡儿积操作,然后再选取符合匹配条件的数据记录。进行笛卡儿积操作时,会生成两个数表数据记录数的乘积条数据记录,如果这两张表的数据记录比较大,则在进行笛卡儿积操作时就会造成死机。

一.单行单列子查询

先创建一张表

+--------+-----------+-------+------+------+-------------+-------+-----------+----------+
| stu_id | stu_name  | grade | sex  | age  | phone       | email | number_id | salary   |
+--------+-----------+-------+------+------+-------------+-------+-----------+----------+
|      1 | san       |     1 | 男   |   12 | 17673043785 |       |        32 |  1000.00 |
|      2 | san2      |     1 | 男   |   13 | 17673043787 |       |        22 |  2000.00 |
|      3 | 唐太宗    |     1 | 女   |   13 | 17673044786 |       |        21 |  3000.00 |
|      4 | 李飞刀    |     1 | 男   |   12 | 17673044786 |       |      NULL |  3500.00 |
|      5 | 李微      |     1 | 男   |   12 | 17673043786 |       |      NULL |  3500.00 |
|      6 | 李微      |     3 | 男   |   16 | 176883333   | 222   |        67 | 20000.00 |
|      7 | 刘备      |     5 | 女   |   20 | 11111111    | 444   |        87 |  5000.00 |
+--------+-----------+-------+------+------+-------------+-------+-----------+----------+

select stu_name,sex,phone,salary from student where( phone,salary) in (select phone,salary from student where phone ='17673044786' and salary > 1000);

显示如下:

+-----------+------+-------------+---------+
| stu_name  | sex  | phone       | salary  |
+-----------+------+-------------+---------+
| 唐太宗    | 女   | 17673044786 | 3000.00 |
| 李飞刀    | 男   | 17673044786 | 3500.00 |
+-----------+------+-------------+---------+

推荐阅读更多精彩内容

  • 一、子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中。 子查询,又叫内部查询,相对于内部查询,包含内部...
    我是强强阅读 2,567评论 0 4
  • 聚合函数 聚合函数对一组值执行计算,并返回单个值。 除了 COUNT 以外,聚合函数都会忽略空值。 聚合函数经常与...
    扯扯_2c79阅读 1,104评论 0 1
  • 子查询 使用比较运算符的子查询 =、 >、 <、 >=、 <=、 <>、 !=、 <=> eg 在这种比较运算符中...
    你好星期四阅读 383评论 0 2
  • 一:按照查询结果的结构分类为4种 1:标量子查询 2:行子查询 3:列子查询 4:表子查询 二:按照子查询是否...
    我是强强阅读 110评论 0 0
  • 设计模式与原则 设计模式原则是为了提高代码的可维护性,可复用性和可扩展性,设计模式是设计模式原则的具体体现。 设计...
    黄二的NPE阅读 103评论 0 0
  • 杨倩,焦点讲师三期,坚持分享525天(2018-6-10) 目的,行为与代价之间的关联 目的:孩子想借由此行为...
    温心怡然阅读 46评论 0 0