首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql Server -匹配精确ids或更多ids

Sql Server -匹配精确ids或更多ids
EN

Stack Overflow用户
提问于 2016-06-06 20:32:20
回答 2查看 127关注 0票数 2

我有一个包含以下列的"messages"表:"id""title"

包含以下列的"categories"表:"id""title"

和具有列的"messages_categories"链接表:"message_id""category_id"

让我们假设我们有ids为的messages

代码语言:javascript
复制
1,2,3

和ids为的categories

代码语言:javascript
复制
1,2,3

具有以下数据的messages_categories

代码语言:javascript
复制
message: 1, category: 1

message: 2, category: 1

message: 2, category: 2

message: 3, category: 1

message: 3, category: 2

message: 3, category: 3

我想要找到完全匹配或更多的匹配,例如

如果我搜索类别1,我会得到消息1,2,3

如果我搜索类别1,2,我会得到消息2,3

如果我搜索类别1,2,3,我只能得到消息3

我使用了很多i,所以每个类别的加入都太多了。

我想我可以使用带有"sum""count""having"语句来查找精确的行,但这还不够好。

谢谢你的帮助,奈沃。

EN

回答 2

Stack Overflow用户

发布于 2016-06-06 21:12:23

如果您需要“更多”,则使用NOT EXISTS,即所谓的带提醒的关系划分。

代码语言:javascript
复制
SELECT DISTINCT messages_id
FROM messages_categories r1
WHERE NOT EXISTS
       (SELECT *
        FROM 
           (SELECT 1 as cat_id UNION SELECT 2 ) S -- id of categories needed 
        WHERE NOT EXISTS
               (SELECT *
                FROM messages_categories AS r2
                WHERE (r1.messages_id = r2.messages_id)
                   AND (r2.category_id = S.cat_id)));
票数 1
EN

Stack Overflow用户

发布于 2016-06-06 21:07:50

类似这样的事情可能会奏效:

代码语言:javascript
复制
SELECT DISTINCT x.message_id
FROM (
   **query-that-gives-the-exact-rows-but-isnt-good-enough**
) AS x
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37657597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档