长期以来一直对此迷迷糊糊,似乎无法找到解决方法。
请参阅下表:
我需要知道具有确切行的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
答案 0 :(得分:1)
如果每个Dim
的{{1}}和DimValue
的组合是唯一的,则可以执行以下操作:
DimCombinationID