如何在MySQL中根据特定组合值查询对应的combination_id?
解决方案
你可以使用分组聚合加条件匹配的方式实现需求,假设你的表名为combination_table,以下是两种常用实现方案:
方案1:字符串拼接匹配法
该方案通过将同ID下的组合值排序后拼接成字符串,和输入的排序后组合字符串做精准匹配:
SELECT Combination_id FROM combination_table GROUP BY Combination_id -- 这里的'1,3,4'替换为你排序后用逗号拼接的查询组合 HAVING GROUP_CONCAT(combination ORDER BY combination SEPARATOR ',') = '1,3,4';
如果你要查询组合1、3、5,只需要把HAVING条件中的值替换为'1,3,5'即可。
方案2:计数校验法(更严谨,避免值长度导致的匹配误差)
该方案通过过滤+计数的方式保证完全匹配,不需要处理字符串拼接:
SELECT Combination_id FROM combination_table -- IN后面的集合替换为你要查询的组合值 WHERE combination IN (1,3,4) GROUP BY Combination_id -- 数字3替换为你查询的组合的元素个数 HAVING COUNT(DISTINCT combination) = 3;
如果你的表中同一个Combination_id下不会有重复的combination值,可以把COUNT(DISTINCT)简化为COUNT(*)。
内容的提问来源于stack exchange,提问作者Sankha Subhra
相关产品推荐
相关产品推荐

