为了完成本关任务,你需要掌握: SELECT语句的用法: not exists, 多层嵌套查询。 表1 人员表(person) 字段名称 数据类型 备注 id int 人员编号,主码,主码约束名为pk_person fullname char(20) 姓名,不可空 telephone char(11) 手机号码,不可空。自己无号,填近亲属的 表2 地点表(location) 字段名称 数据类型 备注 id int 地点编号,主码,主码约束名为pk_location location_name char(20) 地点名称,不可空 表3 行程表(itinerary) 字段名称 数据类型 备注 id int 行程编号,主码,主码约束名为pk_itinerary p_id int 人员编号,外码,外码约束名为fk_itinerary_pid loc_id int 所在地点编号,外码,外码约束为fk_itinerary_lid s_time datetime 到达该地点的时间 e_time datetime 离开该地点的时间 编程要求 直接用一条语句写出能实现任务要求的SQL语句: 查询人员表去过所有地点的人员姓名。查询结果依人员姓名顺序排序。 你需要用2个not exists子查询才能完成该查询。至于第二层嵌套子查询,你应该有多种选择,你可以选择更简单的写法。我们不限定你怎么实现,只要求用一条语句。
时间: 2024-03-01 19:55:23 浏览: 27
以下是能够实现任务要求的SQL语句:
```
SELECT DISTINCT fullname
FROM person
WHERE NOT EXISTS (
SELECT *
FROM location
WHERE NOT EXISTS (
SELECT *
FROM itinerary
WHERE itinerary.p_id = person.id
AND itinerary.loc_id = location.id
)
)
ORDER BY fullname;
```
该语句使用了两个 `NOT EXISTS` 子查询,第一个子查询用于查询所有地点,第二个子查询用于查询每个人员是否去过该地点。如果该人员去过所有地点,则该人员的姓名将会被查询出来。最后,使用 `DISTINCT` 关键字去重,并按照人员姓名顺序进行排序。
相关问题
代码如何优化 :select t1.* from t1 where NOT EXISTS ( select 1 from t2 where t1.ip=t2.id );
可以考虑以下优化措施:
1. 添加索引:对t1表中的ip列和t2表中的id列添加索引,可以大大提高查询效率。
2. 改写成LEFT JOIN语句:将NOT EXISTS改写成LEFT JOIN,这样可以避免子查询的多次执行,从而提高查询效率。
优化后的SQL语句如下:
SELECT t1.*
FROM t1
LEFT JOIN t2 ON t1.ip = t2.id
WHERE t2.id IS NULL;
直接用一条语句写出能实现任务要求的SQL语句: 查询人员表去过所有地点的人员姓名。查询结果依人员姓名顺序排序。 你需要用2个not exists子查询才能完成该查询。至于第二层嵌套子查询,你应该有多种选择,你可以选择更简单的写法。我们不限定你怎么实现,只要求用一条语句。
可以使用两个 NOT EXISTS 子查询和 GROUP BY 子句来实现该查询。具体的 SQL 语句如下:
```
SELECT person.name FROM person
WHERE NOT EXISTS (
SELECT location FROM location
WHERE NOT EXISTS (
SELECT visit.person_id FROM visit
WHERE visit.person_id = person.id AND visit.location = location.location
)
)
ORDER BY person.name
```
解释:首先从 person 表中选择所有人,并使用嵌套的 NOT EXISTS 子查询来判断该人是否去过所有地点。内层的 NOT EXISTS 子查询用来判断该人是否去过当前地点,如果该人没有去过当前地点,则该地点不是该人去过的所有地点。如果不存在这样的地点,则该人被包含在结果集中。最后,使用 GROUP BY 子句对结果按姓名进行分组,并使用 ORDER BY 子句按姓名进行排序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)