匹配一组与另一组的成员或匹配无序混合物

时间:2014-06-25 12:54:06

标签: mysql

我需要将一个组的成员与其他组的列表进行匹配,以查看是否有任何其他组具有完全相同的成员

或者换句话说,我希望将一组混合物与另一组混合,然后找回匹配混合物的名称。

示例:

表A(这包含我新发明的goddmorningcoffee的成分^^)

成分名称必须是每种混合物和每组内成分的顺序 是随机的

+-------+-------------------+--------------+ |uniqeid|mixname |ingredientname| +-------+-------------------+--------------+ |0 |goddmorningcoffee |BEER | +-------+-------------------+--------------+ |1 |goddmorningcoffee |PIPECLEANER | +-------+-------------------+--------------+ |2 |goddmorningcoffee |BATTERYACID | +-------+-------------------+--------------+ |3 |goddmorningcoffee |COFFEE | +-------+-------------------+--------------+ 现在我想要匹配我的" goddmorningcoffee"反对表b 它拥有我储存的所有混合物。

表B具有与表a完全相同的结构..更多数据 +-------+----------------+--------------+ |uniqeid|mixname |ingredientname| +-------+----------------+--------------+ |0 |heartcruscher |SPEED | +-------+----------------+--------------+ |1 |heartcruscher |NITRO | +-------+----------------+--------------+ |2 |metalcleaner |PIPECLEANER | +-------+----------------+--------------+ |3 |metalcleaner |BATTERYACID | +-------+----------------+--------------+ |4 |grandmas_best |BEER | +-------+----------------+--------------+ |5 |grandmas_best |PIPECLEANER | +-------+----------------+--------------+ |6 |grandmas_best |BATTERYACID | +-------+----------------+--------------+ |7 |grandmas_best |COFFEE | +-------+----------------+--------------+ |8 |grandpas_best |BEER | +-------+----------------+--------------+ |9 |grandpas_best |PIPECLEANER | +-------+----------------+--------------+ |10 |grandpas_best |BATTERYACID | +-------+----------------+--------------+ |11 |grandpas_best |COFFEE | +-------+----------------+--------------+ 在这种情况下,我可以回来:

grandpas_best和grandmas_best

因为他们是唯一的 其中包含完全相同成员的组。

抱歉英语不好我希望问题足够详细。

im。在100%mysql解决方案之后没有使用像php之类的东西

招呼^^

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是group_concat()

select mixname, group_concat(ingredientname order by ingredientname) as ingredients
from tableb
group by mixname
having ingredients = (select group_concat(ingredientname order by ingredientname)
                      from tablea
                     );