FOR ALL/EXIST 查询
FOR ALL/EXIST Queries
我正在学习有关数据库的在线课程。但是,我真的不知道下一步是什么,我该如何回答这个问题。有人可以帮忙吗?
这是我目前所拥有的。
SELECT P.name
FROM Persons P
LEFT JOIN Knows K ON K.personA_id = P.id
WHERE K.age >= P.age
SELECT p.name
FROM Persons p
WHERE p.age >
((SELECT p1.age
FROM persons p1
INNER JOIN knows k
ON p1.id = k.personB_id)
+ 5)
类似于此的东西应该可以工作。我没有对此进行测试,但基本思想就在那里。您必须通过 运行 table 2 上的子查询将 table 1 的年龄与 table 1 中已知的每个人的年龄进行比较。还有其他方法,但这似乎最简单的。尝试一下,如果您遇到任何错误,请告诉我。享受:)
试试这个:
SELECT distinct P1.name
FROM Persons P1
INNER JOIN Knows K ON K.personA_id = P1.id
INNER JOIN Persons P2 ON K.personB_id = P2.id AND P1.age - P2.age > 5
它将输出认识 1 个人或更多人 (personA) 并且认识的每个人都年轻 5 岁以上 (personB)
使用 ALL/EXISTS
引用的问题的标题。以下是实际执行此操作的方法:
/* all */
select p.name
from Persons as p
where p.age - 5 > all (
select p2.age
from
Knows as k inner join
Persons as p2
on p2.person_id = k.personB_id
where p2.id = p.id
)
/* not exists */
select p.name
from Persons as p
where not exists (
select p2.age
from
Knows as k inner join
Persons as p2
on p2.person_id = k.personB_id
where p2.id = p.id
and p2.age > p.age - 5
)
我正在学习有关数据库的在线课程。但是,我真的不知道下一步是什么,我该如何回答这个问题。有人可以帮忙吗? 这是我目前所拥有的。
SELECT P.name
FROM Persons P
LEFT JOIN Knows K ON K.personA_id = P.id
WHERE K.age >= P.age
SELECT p.name
FROM Persons p
WHERE p.age >
((SELECT p1.age
FROM persons p1
INNER JOIN knows k
ON p1.id = k.personB_id)
+ 5)
类似于此的东西应该可以工作。我没有对此进行测试,但基本思想就在那里。您必须通过 运行 table 2 上的子查询将 table 1 的年龄与 table 1 中已知的每个人的年龄进行比较。还有其他方法,但这似乎最简单的。尝试一下,如果您遇到任何错误,请告诉我。享受:)
试试这个:
SELECT distinct P1.name
FROM Persons P1
INNER JOIN Knows K ON K.personA_id = P1.id
INNER JOIN Persons P2 ON K.personB_id = P2.id AND P1.age - P2.age > 5
它将输出认识 1 个人或更多人 (personA) 并且认识的每个人都年轻 5 岁以上 (personB)
使用 ALL/EXISTS
引用的问题的标题。以下是实际执行此操作的方法:
/* all */
select p.name
from Persons as p
where p.age - 5 > all (
select p2.age
from
Knows as k inner join
Persons as p2
on p2.person_id = k.personB_id
where p2.id = p.id
)
/* not exists */
select p.name
from Persons as p
where not exists (
select p2.age
from
Knows as k inner join
Persons as p2
on p2.person_id = k.personB_id
where p2.id = p.id
and p2.age > p.age - 5
)