美文网首页
MySQL学习日记(18)子查询

MySQL学习日记(18)子查询

作者: copymaker | 来源:发表于2021-02-08 13:50 被阅读0次

    子查询是什么

    子查询(Subquery)就是出现在其他MySQL语句中的查询,也就是查询中的查询(当然不一定要在查询语句中嵌套)
    例如:

    #查找数据1表中 列字段 等于数据表2的列字段
    SELECT * FROM 数据1 WHERE 列字段= (SELECT 列字段 FROM 数据表2);
    

    其中SELECT * FROM 数据1,称为父查询(Outer Query/Outer Statement)
    SELECT 列字段 FROM 数据表2,被称为子查询(SubQuery)

    • 子查询必要要加括号
    • 子查询可以使用关键字和条件,如: DISTINCT、 GROUP BY、ORDER BY、LIMIT、 函数等。
    • 父查询不仅只是查询,也可是是SELECT,INSERT,UPDATE ,SET或DO
    • 子查询可以返回标量、一行、一列或子查询。

    为什么要用子查询

    试想对比 或者插入另一个表的值,还要先查询另一个表,获得值后在插入非常麻烦,不如直接将查询结果进行对比,或者插入省事

    怎么使用

    mysql> SELECT * FROM 运算符例子;
    +----+------+
    | id | 数值 |
    +----+------+
    |  1 |    1 |
    |  2 |    3 |
    |  3 |    5 |
    |  4 |    7 |
    |  5 |    9 |
    |  6 |   11 |
    |  7 |   13 |
    +----+------+
    7 rows in set (0.01 sec)
    
    mysql> SELECT * FROM 运算符例子2;
    +----+------+
    | id | 数值 |
    +----+------+
    |  1 |    2 |
    |  2 |    4 |
    |  3 |    6 |
    |  4 |    8 |
    |  5 |   10 |
    |  6 |   12 |
    |  7 |   14 |
    +----+------+
    7 rows in set (0.00 sec)
    
    #查找 运算符例子表中 数值小于 运算符例子2表中 id=5(10)的数据
    mysql> SELECT id,数值 FROM 运算符例子 WHERE 数值 < (SELECT 数值 FROM 运算符例子2 WHERE id=5);
    +----+------+
    | id | 数值 |
    +----+------+
    |  1 |    1 |
    |  2 |    3 |
    |  3 |    5 |
    |  4 |    7 |
    |  5 |    9 |
    +----+------+
    5 rows in set (0.00 sec)
    #10>9=1(true)
    mysql> SELECT (SELECT 数值 FROM 运算符例子2 WHERE id=5) > (SELECT 数值 FROM 运算符例子 WHERE id = 1) AS 比较;
    +------+
    | 比较 |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)
    #10<9=0(false)
    mysql> SELECT (SELECT 数值 FROM 运算符例子2 WHERE id=5) < (SELECT 数值 FROM 运算符例子 WHERE id = 1) AS 比较;
    +------+
    | 比较 |
    +------+
    |    0 |
    +------+
    1 row in set (0.00 sec)
    

    相关文章

      网友评论

          本文标题:MySQL学习日记(18)子查询

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