假设我有一张这样的桌子,
ID | 标签ID |
---|---|
1 | 1 |
1 | 2 |
1 | 5 |
2 | 1 |
2 | 5 |
3 | 2 |
3 | 4 |
3 | 5 |
3 | 8 |
我想选择id,其中tagId包括 2 和 5。对于这个假资料集,它应该回传 1 和 3。
我试过,
select id from [dbo].[mytable] where tagId IN(2,5)
但它分别考虑了2和5。由于 tagId 是动态的,我也不想让我的表格保持宽格式。它可以达到任意数量的列。我还考虑使用两个不同的查询进行过滤以查找(以某种方式)交集。但是,由于在现实生活中我可能会在 tagId 中搜索两个以上的值,这对我来说听起来效率很低。
我确信这是标签搜索之前面临的问题。你有什么建议?改变表格格式?
uj5u.com热心网友回复:
一种选择是计算tagId
每个id
具有的不同s(来自您正在寻找的)的数量:
SELECT id
FROM [dbo].[mytable]
WHERE tagId IN (2,5)
GROUP BY id
HAVING COUNT(DISTINCT tagId) = 2
0 评论