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

MySQL如何查询同时关联item-1和item-2记录的id值

问题描述

现有如下结构的数据库表:

|id |item    |
|1  |item-1  |
|2  |item-1  |
|1  |item-2  |
|3  |item-3  |
|2  |item-2  |
|1  |item-3  | 

需要查询同时拥有item-1和item-2对应记录的id值,原有语句SELECT id FROM table WHERE item = 'item-1' AND item = 'item-2'无法返回正确结果,预期输出如下:

|id |
|1  |
|2  |
解决方案
  • 方案1:聚合分组筛选(推荐)
SELECT id 
FROM 表名 
WHERE item IN ('item-1', 'item-2') 
GROUP BY id 
HAVING COUNT(DISTINCT item) = 2;

说明:先筛选出所有item为目标值的记录,按id分组后统计不同item的数量,数量等于目标item总数的id即为符合要求的结果。如果表中不存在同id下重复item的记录,可以省略DISTINCT关键字提升查询效率。

  • 方案2:自连接查询
SELECT DISTINCT t1.id 
FROM 表名 t1 
JOIN 表名 t2 ON t1.id = t2.id 
WHERE t1.item = 'item-1' AND t2.item = 'item-2';

说明:通过同表关联的方式,匹配同一个id下同时存在两种item的记录,最后去重得到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:27:02