美文网首页
MySQL子查询

MySQL子查询

作者: Torin76 | 来源:发表于2018-08-24 10:57 被阅读27次
    为什么要使用子查询

    在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 |
    +-----------+------+-------------+---------+
    

    相关文章

      网友评论

          本文标题:MySQL子查询

          本文链接:https://www.haomeiwen.com/subject/goqmiftx.html