You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何查询同时满足同列多匹配条件的对应rack_id值

MySQL行式存储多属性匹配查询方案

现有一张存储动态数据的MySQL行式存储表,表结构包含3个字段:id(主键)、rack_id(机架ID)、data(动态属性值),示例数据如下:

idrack_iddata
1101Red
210114CM
3101Open
4102Green
510214CM
6102Open
7103Red
810320CM
9103Open
10104Red
1110414CM
12104Close

需求为查询同时满足data值为Red和14CM的所有rack_id,预期返回结果为101、104。

可用查询方案

方案1:分组聚合筛选(推荐)

该方案拓展性强,后续新增匹配条件只需修改两处参数即可,代码如下:

SELECT rack_id
FROM 替换为你的实际表名
WHERE data IN ('Red', '14CM')
GROUP BY rack_id
HAVING COUNT(DISTINCT data) = 2;

逻辑说明:

  • 先用WHERE过滤出所有data值属于目标匹配范围的记录,缩小计算范围
  • 按rack_id分组后,判断每个分组内去重后的data数量刚好等于目标匹配条件的数量(此处为2),即可证明该rack_id同时包含所有目标属性

方案2:自连接查询

该方案适合匹配条件少的场景,代码如下:

SELECT DISTINCT t1.rack_id
FROM 替换为你的实际表名 t1
INNER JOIN 替换为你的实际表名 t2 
  ON t1.rack_id = t2.rack_id
WHERE t1.data = 'Red' 
  AND t2.data = '14CM';

逻辑说明:

  • 把表做自关联,关联条件为rack_id相同
  • 两个关联表分别匹配不同的目标data值,能关联上的rack_id即为同时满足两个条件的目标值,加DISTINCT避免重复返回

内容的提问来源于stack exchange,提问作者jawad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:24:02