首页 > 解决方案 > 有没有一个简单的查询可以解决这个难题?

问题描述

我在这里从事个人项目/开发工作。与starfleet command 一起工作,查询我们的星舰舰队库存。我想查询 Features 表并返回与功能列表匹配的 starshipId 列表。我想出的最好的方法是返回任何一个匹配项的查询。但是,我想为具有查询中列出的所有功能的星舰返回 starshipid。请看图片。

到目前为止我已经尝试过:

select distinct starshipid
from features
where description in ('Teleporation', 'Warp Speed')

我正在寻找一个只会返回 starshipid: 1000 的查询

数据样本

标签: sql-server

解决方案


如果您只需要获得那些在 IN 子句中提到的所有描述的 startshipid,那么在 HAVING 子句中使用 count 和 distinct。您的查询将如下所示:

SELECT STARSHIPID
FROM FEATURES
WHERE DESCRIPTION IN ('TELEPORATION', 'WARP SPEED')
GROUP BY STARSHIPID
HAVING COUNT(DISTINCT DESCRIPTION) = 2

推荐阅读