MYSQL从所有行完全符合给定条件的行集中返回“ CombinationID”

时间:2019-06-06 21:20:36

标签: mysql

长期以来一直对此迷迷糊糊,似乎无法找到解决方法。

请参阅下表:

enter image description here

我需要知道具有确切行的DimCombinationID,例如(dim = 100和DimValue = 395)AND(dim = 900和DimValue = 281)AND(dim = 600和DimValue = 342)。

所以答案是DimCombinationID,它具有3行与给定条件完全匹配。在这种情况下,DimCombinationID为22。

条件的数量可以改变,例如,它可能只是(dim = 100并且DimValue = 395)->我需要使DimCombinationID仅具有一行并且该行符合给定的dim = 100,DimValue = 395。

行数比给定条件数多或少或不满足所有条件的DimCombinationID不在结果集中。

我尝试了很多查询,但似乎无法理解。

例如一个是:

SELECT DimCombinationID FROM dimcombinations WHERE DimCombinationID IN (

    SELECT DimCombinationID FROM dimcombinations
    WHERE
        (Dim = '100' AND DimValue = '395') OR
        (Dim = '600' AND DimValue = '342') OR
        (Dim = '900' AND DimValue = '281') 

    GROUP BY DimCombinationID

    HAVING COUNT(DimCombinationID) = 3
)
GROUP BY DimCombinationID

但是我写这个查询,它要么匹配错误,要么显示错误的combinationID。此特定查询可能是正确的80%,而不是100%。

也许有人可以帮助我吗?

我已经找到了这个问题和答案,但是尽管有帮助,但是我仍然看不到光明...。 Mysql + where clause matching multiple rows

1 个答案:

答案 0 :(得分:1)

如果每个Dim的{​​{1}}和DimValue的组合是唯一的,则可以执行以下操作:

DimCombinationID