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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容