gpt4 book ai didi

c# - 所有记录必须存在才能返回记录的 SQL 查询

转载 作者:行者123 更新时间:2023-11-30 15:07:45 26 4
gpt4 key购买 nike

我什至不知道怎么问这个问题。

我有一个标签表:

TagId  Tag
----- -----
1 Fruit
2 Meat
3 Grain

我有一个事件表:

EventId   Event
------- -----------
1 Eating Food
2 Buying Food

我需要做的是只带回所有选定标签与之相关联的事件。

如果选择了三个标签,则只显示具有所有三个标签的事件。

例如:

映射表

EventId   TagId
------- -----
1 1
1 3
2 1

如果我这样写一个查询:

select * from MapTable where where tagId in (1,3)

这将返回 Eating Food 和 Buying Food。

但我需要做的是带回同时具有标签 1 和 3 的事件。这意味着在这种情况下我要返回的唯一事件是吃东西,因为它同时具有两个选定的标签。

我想知道这是否可以在 TSQL 中完成,或者我是否必须使用业务层将其转换为对象以返回到 GUI。

谢谢。

最佳答案

昨天有一个非常相似的问题:Query for exact match of users in a conversation in SQL Server

基本上你可以这样做:

DECLARE @NumTags INT = 2

SELECT EventID
FROM EventTag
GROUP BY EventID
HAVING
Sum(CASE WHEN TagID IN (1, 3) THEN 1 ELSE 0 END) >= @NumTags

所以这将找到两个标签都存在的所有事件(这允许这两个标签与任何其他标签一起存在的情况)

关于c# - 所有记录必须存在才能返回记录的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com