【发布时间】:2020-04-28 15:52:14
【问题描述】:
我想设置一个 SQLite 查询来确定具有特定 person_id 的人是否吃了 Fruit 'apple' 而不是水果 'banana'。我可以访问Fruit 表,其中包含有关谁吃了哪种水果的信息。然后,我想将此信息用于SELECT 吃apples 但不是bananas 与子查询的人的姓氏。
在我看来,它会是这样的:
SELECT
P.last_name
FROM
Person AS P
WHERE
P.pid IN (
SELECT
F1.pid
FROM
Fruit AS F1,
Fruit AS F2
WHERE
F1.pid = F2.pid
AND F1.type = 'apple'
AND F2.type <> 'banana'
)
ORDER BY P.pid;
但是,这不是一个足够严格的条件,因为现在我允许在 F2 中使用与在 F1 中相同的水果类型,这仍然允许选择该人。另一方面,我不能限制太多,例如
F1.type <> F2.type
在子查询中,因为这会将合法人员从SELECTed 中踢出。
必须有什么限制才能使这项工作有效?
【问题讨论】:
标签: sql sqlite select subquery