我需要将一个组的成员与其他组的列表进行匹配,以查看是否有任何其他组具有完全相同的成员
或者换句话说,我希望将一组混合物与另一组混合,然后找回匹配混合物的名称。
示例:
表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之类的东西
招呼^^
答案 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
);