从有条件的映射表中选择不同的记录

耻辱

在我的 MySQL 数据库中,我有这些表:

在此处输入图片说明

我想选择只拥有鸟类而没有其他宠物的用户数量

到目前为止,我想出了这个:

SELECT COUNT(DISTINCT(user_id)) FROM users_pets_map WHERE pet_id IN (SELECT id FROM pets WHERE animal = 'bird')

但它不满足不拥有其他动物的要求。

吉内什沙|

您可以修改您的查询如下:

 SELECT COUNT(DISTINCT(user_id)) FROM users_pets_map WHERE pet_id IN (SELECT id 

FROM pets WHERE animal = 'bird') AND user_id NOT IN (SELECT user_id FROM 

users_pets_map WHERE pet_id IN (SELECT id FROM pets WHERE animal <> 'bird'))

最后一个子查询将获取不是鸟类的 pet_id,它之外的查询将获取除鸟类以外的动物的用户。最后结合您当前的查询,它将为您获取没有任何其他动物以及鸟类的用户。尽管就时间复杂度而言,上述查询不是最佳解决方案,但它是众多解决方案之一,并且更易于理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有条件地替换映射表中的选择值

来自分类Dev

如何有条件地从不同表的两列中选择

来自分类Dev

从带有条件联接的表中选择列

来自分类Dev

有条件地在R中选择多个列

来自分类Dev

有条件地从列决策中选择数据

来自分类Dev

MySQL - 加入多个映射表并计算具有不同映射条件的记录

来自分类Dev

SQL语句有条件地选择相关记录

来自分类Dev

根据字段有条件地选择整个记录

来自分类Dev

如何有条件地从SQL Server选择记录

来自分类Dev

选择带有条件的SQL以计算不同的值

来自分类Dev

选择具有条件的不同列的多行

来自分类Dev

根据另一列中的数据有条件地从不同列中选择数据

来自分类Dev

从所有条件中选择至少具有两个条件的行

来自分类Dev

从所有条件中选择至少具有两个条件的行

来自分类Dev

从带有条件的选择中选择SQL创建表

来自分类Dev

有条件的记录分组

来自分类Dev

删除有条件的记录

来自分类Dev

具有条件的不同值

来自分类Dev

在日期之间有条件选择

来自分类Dev

有条件的子选择

来自分类Dev

有条件的指令选择

来自分类Dev

有条件选择-SQL Server

来自分类Dev

有条件地选择模型

来自分类Dev

有条件的行选择-Matlab

来自分类Dev

有条件地在iReport中选择一个列表节点?

来自分类Dev

在SQL中选择带有条件的单个XML节点

来自分类Dev

从mysql表中选择带有条件的重复值

来自分类Dev

LINQ有条件地从表中选择并返回多列作为单个列表

来自分类Dev

从两个有条件的表中选择两列