-- 10) 查询人员表中去过所有地点的人员姓名。查询结果依人员姓名顺序排序。 -- 请用一条SQL语句实现该查询:
时间: 2024-03-01 11:55:09 浏览: 76
可以使用以下SQL语句来实现该查询:
```
SELECT DISTINCT p.name
FROM person p
WHERE NOT EXISTS (
SELECT l.location
FROM location l
WHERE NOT EXISTS (
SELECT v.visit_id
FROM visit v
WHERE v.person_id = p.id
AND v.location_id = l.id
)
)
ORDER BY p.name;
```
该查询语句使用了子查询和NOT EXISTS操作符来查询去过所有地点的人员姓名,并按照人员姓名的顺序排序。首先,内部的子查询查找所有地点,外部的查询查找所有去过所有地点的人员姓名。同时,使用DISTINCT关键字来保证查询结果中不会出现重复的人员姓名。
相关问题
查询人员表中去过所有地点的人员姓名。查询结果依人员姓名顺序排序。 -- 请用一条SQL语句实现该查询:
好的,以下是您需要的SQL语句:
```
SELECT 人员姓名
FROM 人员表
WHERE NOT EXISTS (
SELECT *
FROM 地点表
WHERE 地点表.人员ID = 人员表.人员ID
AND 地点名称 NOT IN (
SELECT 地点名称
FROM 地点表
)
)
ORDER BY 人员姓名
```
该SQL语句使用了 NOT EXISTS 子查询,查询人员表中去过所有地点的人员姓名,并按照人员姓名进行排序。
直接用一条语句写出能实现任务要求的SQL语句: 查询人员表去过所有地点的人员姓名。查询结果依人员姓名顺序排序。 你需要用2个not exists子查询才能完成该查询。至于第二层嵌套子查询,你应该有多种选择,你可以选择更简单的写法。我们不限定你怎么实现,只要求用一条语句。
以下是一条能实现任务要求的 SQL 查询语句:
```
SELECT name FROM person
WHERE NOT EXISTS (
SELECT location FROM location
WHERE NOT EXISTS (
SELECT location FROM visit WHERE visit.person_id = person.id AND visit.location = location.location
)
)
ORDER BY name;
```
这条 SQL 查询语句使用了两个 `NOT EXISTS` 子查询,第一个子查询用于找到去过所有地点的人员,第二个子查询用于在去过所有地点的人员中筛选出去过每个地点的人员。最后使用 `ORDER BY` 子句对结果按照人员姓名排序。
阅读全文