MySQL学习日记(18)子查询

子查询是什么

子查询(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)子查询)