【发布时间】:2015-08-20 15:49:25
【问题描述】:
假设我有一个匹配person_ids 到pets 的表。我有一份房主必须拥有的理想宠物的清单(每种宠物至少一只),从下表中,我想看看谁符合要求。
该列表当然是(dog, cat, tiger)。人们肯定可以拥有不止一个,但这些是必不可少的(因此person_id = 1 是唯一有效的)。
+---------+-----------+--------+
| home_id | person_id | pet |
+---------+-----------+--------+
| 1 | 1 | dog |
| 2 | 1 | dog |
| 3 | 1 | cat |
| 4 | 1 | tiger |
| 5 | 2 | dog |
| 6 | 2 | cat |
| 7 | 3 | <null> |
| 8 | 4 | tiger |
| 9 | 4 | tiger |
| 10 | 4 | tiger |
+---------+-----------+--------+
我已经能够通过跑步检查谁有老虎或猫:
select person_id, pet
from house
group by person_id having pet in ('dog','cat','tiger'),
但显然这给了person_ids 至少拥有这些宠物中的一只——而不是全部。
【问题讨论】:
-
你的主键是什么?
标签: sql postgresql select relational-division