我正在尝试查询具有不同父母共同点的所有结果。我只需要那些价值观。
例如,我们有两个表:Models和Items(当然还有一个链表,ItemsInModel)。所有项目都有一个模型,反之亦然。所以现在我需要一个查询来查询一个或多个模型的所有常用项目。
换句话说,我需要使用与IN语句相反的方法(因为IN使用OR)。我们需要一个动态AND,以便查询可以是:
Select *
from Items i
join ItemsInModel iim on iim.itemId = i.id
join Models m on iim.modelId = m.id
WHERE m.id = X AND m.id = Y AND m.id = Z
如果我们有一个模型ID列表,有没有办法查询所有常用项?
答案 0 :(得分:1)
你可以试试这个。它返回所有模型中使用的最常见项目。
SELECT * FROM Items i
WHERE i.id IN (
SELECT TOP 1 WITH TIES iim.itemId
FROM
ItemsInModel iim
GROUP BY
iim.itemId
ORDER BY COUNT(DISTINCT iim.modelId) DESC
)