假设我有两个表,其中一个表代表拥有多只狗的用户:
用户表
id name
1 aaaa 2 bbbb 3 cccc 4 dddd
狗表
id user_id breed
1 1 poodle 2 1 lab 3 2 lab 4 3 bulldog 5 4 lab 6 4 lab
我想找到只拥有一只且仅有一只“lab”品种狗的用户。
期望得到以下结果:
用户表
id name
2 bbbb
在这种情况下,只有狗id为3的狗符合要求,因为它的主人只有一只狗,而且是一只拉布拉多。
用户表
id name
1 aaaa 2 bbbb 3 cccc 4 dddd
狗表
id user_id breed
1 1 poodle 2 1 lab 3 2 lab 4 3 bulldog 5 4 lab 6 4 lab
我想找到只拥有一只且仅有一只“lab”品种狗的用户。
期望得到以下结果:
用户表
id name
2 bbbb
在这种情况下,只有狗id为3的狗符合要求,因为它的主人只有一只狗,而且是一只拉布拉多。
SELECT users.* FROM users INNER JOIN dogs ON users.id = dogs.user_id WHERE dogs.breed = 'lab'
从这里开始怎么做?我觉得我可能忽略了一些显而易见的东西,这可能是一个常见的需求,但是我的谷歌搜索技巧此时正在失败。寻求面向Postgres的解决方案,但欢迎任何帮助!