如何选择我提供的每个类别ID下列出的图书ID作为一组类别ID
e.g 我想得到我在这里列出的所有类别下列出的书ID: (A,B,C,D,......等),而不是其中任何一个。
以下select语句不适用于我的查询条件: 选择bookId 来自bookCategories 在哪里categoryId IN('A','B','C','D',.....); 因为它检索任何指定类别下列出的书籍。
感谢您的帮助..
答案 0 :(得分:2)
您可以使用IN
&还要检查每本书的不同类别的数量是否与您在IN
谓词中提供的类别数相同:
SELECT T.bookId
FROM (SELECT bookId, count(distinct categoryId) catCount
FROM bookCategories
WHERE categoryId IN ('A','B','C','D',.....)
GROUP BY bookId) T
WHERE T.catCount = myCategoriesCount
如果你不知道你有多少个类别,你可以创建一个临时表#CAT(categoryId)
,用你的类别填充它并运行以下查询:
SELECT T.bookId
FROM (SELECT bc.bookId, count(distinct c2.categoryId) catCount
FROM bookCategories bc
JOIN #CAT c2 on bc.categoryId = c2.categoryId
GROUP BY bc.bookId) T
WHERE T.catCount = (SELECT COUNT(DISTINCT categoryId) FROM #CAT)