SQL-标签搜索查询

威西亚

我的数据库中有下表:

ID  name
1   x
2   x
3   y
1   y
1   z

现在,我只想选择同时具有“ x”和“ y”值的标签名称的该对象(ID)。在这种情况下,这将仅是ID = 1的记录,因为寻求的值集(“ x”和“ y”)是该记录可能的名称集(“ x”,“ y”和“ z”)的子集。

如何编写一个SQL查询?
感谢帮助 :)

戈登·利诺夫(Gordon Linoff)

一种方法使用聚合:

select id
from t
where name in ('x', 'y')
group by id
having count(*) = 2;

如果您关心性能,则可以将其与以下各项进行比较:

select id
from t tx join
     t ty
     on tx.id = ty.id and tx.name = 'x' and ty.name = 'y';

第一个版本更容易归纳为更多标签。在某些情况下,第二个可能有更好的性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章