MySQL数据库——使用子查询

**SELCET语句是SQL的查询。迄今为止我们所看到的所有SELCET都是简单查询,即从单个数据库表中检索数据的单条语句。
SQL还允许创建子查询,就是嵌套在其他查询内的查询!**

part 1 使用子查询进行过滤

SELECT coder.code_id FROM coder WHERE ID IN (SELECT coder.ID
FROM coder WHERE coder.name = ‘huang’);

上面的例子就是使用了子查询 我们从内往外来说,我们的目的是筛选出 name 都为 huang 的行 的code_id:
(1) 我们先把 name = ‘huang’ 的ID 筛选出来
(2) 然后根据id 我们 把他们的 code_id 筛选出来

**我们这里需要说明几点:
1.包含子查询的查询一般都比较复杂,要合理的使用缩进来使语句便于阅读!
2.显而易见,在WHERE子句中使用子查询能够编写出功能很强的并且非常灵活的SQL语句。对于能嵌套的子查询数目,并没有限制
但是在实际使用中不要太多,这会限制系统的性能。
3.子查询 一般 和 IN 操作符结合使用 。

part 2 作为计算字段使用子查询

现在我们考虑如下操作:
(1)从表中检索出所有程序员用户列表
(2)对于所有程序员用户,统计他们在git表中的作品数目

SELECT git.state,(SELECT COUNT(*) FROM git,coder WHERE git.name = coder.name) AS lev FROM git;

像上面这样类型的查询称为相关子查询,两个表哦。相关子查询:涉及外部查询的子查询

猜你喜欢

转载自blog.csdn.net/qq_36120793/article/details/78843070