如何从同一张数据表中获取匹配ID=1的DESC值的所有ID
筛选与指定ID的DESC值匹配的所有ID
原始数据表
+------+------+ |ID |DESC | +------+------+ |1 |A | +------+------+ |1 |B | +------+------+ |2 |A | +------+------+ |3 |C | +------+------+ |4 |B | +------+------+
需求
获取所有满足以下条件的ID:该ID对应的DESC值与ID=1的任意DESC值匹配。
解决方案
方法1:IN子查询法
先通过子查询提取ID=1对应的所有DESC值,再筛选出所有DESC落在该集合中的ID:
SELECT DISTINCT ID FROM your_table_name WHERE `DESC` IN (SELECT `DESC` FROM your_table_name WHERE ID = 1);
注:
DESC是SQL关键字,需用反引号()包裹避免语法冲突;DISTINCT`用于去重,防止ID=1因多条记录重复输出。
方法2:自连接法
通过自连接关联表中DESC值相等的记录,筛选出关联到ID=1的所有ID:
SELECT DISTINCT t1.ID FROM your_table_name t1 JOIN your_table_name t2 ON t1.`DESC` = t2.`DESC` WHERE t2.ID = 1;
预期输出
+------+ |ID | +------+ |1 | +------+ |2 | +------+ |4 | +------+
内容的提问来源于stack exchange,提问作者notAChance
相关产品推荐
相关产品推荐

