http://sqlfiddle.com/#!4/bab93d甲骨文返回行只有当所有的连接条件匹配
参见SQL小提琴例子......我有客户,标签和映射表。我试图通过标签实现客户搜索,并且它必须是AND搜索。查询被传递一个标签标识符列表(任何数字),并且它只能返回具有所有标签的客户。
在这个例子中,我使用了一个IN运算符,但是这对应于OR搜索并且不能解决我的问题。查询看起来应该是什么样的AND搜索?
select
*
from
customer c
inner join customer_tag ct on ct.customer_id = c.customer_id
where
ct.tag_id in (1, 2);
这两者都返回客户,但只有第一个客户被打上标签1和2
你知道事先有多少个标签吗?如果你知道你必须匹配X标签,你可以将它添加到你的逻辑 –
那么,用户选择标签,所以查询本身不知道。但它可以计算有多少人通过它。 – Edgar