+-------------+----------+-----------+
| animal_name | tag_name | tag_group |
+-------------+----------+-----------+
| CatBlue | cat | species |
| CatBlue | blue | colour |
| DogBlue | dog | species |
| DogBlue | blue | colour |
| DogRed | dog | species |
| DogRed | red | colour |
+-------------+----------+-----------+
上表是各种联接表的简化视图。
它是基于所选标记返回结果的系统的一部分。问题是如果选择了蓝色和cat标签,系统当前也会返回dogblue(在sql中使用或)
在mysql中,如何只搜索所有标记组中有一个或多个标记的动物?是否可以在查询中使用标记组列值?
编辑:我想能够要求表中的动物有蓝色和猫的颜色行。其中tag_name=cat或tag_name=blue也会提到狗。
2条答案
按热度按时间slhcrj9b1#
为了得到
animal_name
你可以使用条件聚合使用mysql,您还可以使用
sum(a=b)
,SUM(tag_name = 'blue' AND tag_group = 'colour')
作为速记,在里面使用表达式sum()
将产生布尔值0/1,真/假演示
为了蓝狗
根据最后的评论,我需要蓝猫和蓝狗加上
OR
有两个动物名称的标准演示
pgky5nke2#
您可以将子请求与您的条件一起使用:
编辑以回复评论
编辑:我的错我忘了一个括号http://sqlfiddle.com/#!9/e9e941/15/0