需要帮助构建单个表的 SQL 查询
我有一个包含以下字段的表:
ID
brandID
productID
我想知道有多少个不同的brandID在此表中至少有一条记录同时包含productID 1和productID 2。例如:
ID|brandID|productID
1 | 1 | 1
2 | 1 | 2
3 | 1 | 2
4 | 2 | 2
5 | 3 | 1
6 | 3 | 1
在上面的示例表中,只有brandID 1有一行包含productID 1 和productID 2。brandID 2 和3 仅包含一种产品。
如何构建查询来获取同时包含 ProductID 1 和 2 的不同品牌 ID 的计数?
I have a table with the following fields:
ID
brandID
productID
I want to know how many distinct brandIDs have at least one record in this table with both productID 1 and productID 2. For example:
ID|brandID|productID
1 | 1 | 1
2 | 1 | 2
3 | 1 | 2
4 | 2 | 2
5 | 3 | 1
6 | 3 | 1
In the above sample table, only brandID 1 has a row with productID 1 and productID 2. brandIDs 2 and 3 only have one product or the other.
How do I build a query to get this count of distinct brandIDs that contain both productID 1 and 2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果你的表名为 t,它应该是这样的:
If your table is named t, it should be something like this:
使用子选择通过
productID=1
获取不同的brandID
,然后获取计数:SELECT COUNT(DISTINCT(brandID)) FROM tbl WHERE BrandID IN (从表中选择不同的品牌ID,其中产品ID=1)和产品ID=2;
Use a sub-select to get distinct
brandID
withproductID=1
, and then get the count:SELECT COUNT(DISTINCT(brandID)) FROM tbl WHERE brandID IN (SELECT DISTINCT brandID FROM tbl WHERE productID=1) AND productID=2;
对于 SQL Server 2005 及更高版本:
for SQL Server 2005 and up:
这就是我要做的:
This is what I would do: