课程: 学习 SQL

免费学习该课程!

今天就开通帐号,24,700 门业界名师课程任您挑!

复合查询

复合查询

在 SQL 中, 除了 JOIN 联合查询外, 还有一种组合查询, 是指将多条 SELECT 语句的结果, 作为一个查询结果集返回。 这种查询方式,通常被称为复合查询。 那么,主要应用的两个场景是: 第一个场景,在一个查询中 从不同表返回结构数据; 第二个是对一个表执行多个查询, 按一个查询返回结果。 比如,我们尝试从人员表中, 获取成绩最高的人员信息。 那么,我们可以输入语句“SELECT 姓,名,成绩 FROM 人员”, “WHERE 成绩=MAX(成绩)”。 这里,我把“SELECT”和“FROM” 放在同一行, 这只是书写习惯,并不影响代码的运行。 我们点击一下“执行”。 我们得到了一个错误提示, “聚合函数MAX使用错误”。 这个函数和其他聚合函数一样, 需要作为 SELECT 子句的一部分 来使用。 所以,我们来更改一下语句。 我们执行一下。 我们将从“人员”表中获取到最高的分数, 然后作为查询结果返回, 最终将“WHERE”子句中 查询出的成绩最高的人员, 姓、名和成绩字段值都获取到了。 当然,我们也可以直接查询 成绩为 100 分的人员。 但通过使用 SELECT 复合函数, 我们就不需要提前知道最高分是多少。 这样,我们的代码就能更加灵活。 如果下次测试的最高分变为 200 分, 不需要改动代码,也能得到我们想要的结果。 那么现在,我们来看一下, 如何在一个查询中, 从不同表中返回结构数据。 比如,我们现在想查询云南的所有参与者, 但是现在我们不记得 云南在“人员”表中的缩写是什么。 那么,与其我们指定一个省份的缩写, 不如我们先在“省市地区”表中, 通过查询它的名称而获得缩写, 然后再用它来查询具体的人员信息。 我们可以尝试这样写语句, “SELECT * FROM 人员”, 然后,WHERE 子句,省份地区等于一组括号, 从我的子查询选择省份缩写, 从“省市地区”表中获取 省份名称“=云南省”。 这样我们就可以先通过 WHERE 子句, 从“省市地区”表中找到云南的简称, 复制给“省份”, 再从“人员”表中找到相应的人员信息。 我们点击一下“执行”。 返回的结果是非常准确的, 有 31 行符合条件的记录。 所以,在日后的工作中, 我们可以使用子查询的方式, 先获取到结果集, 然后再使用该结果获取我们想要的信息。

内容