如何查询表中colA与另一行colB相等的行及ID?
解决方案
可以通过**自连接(Self-Join)**实现需求,核心是将表与自身关联,匹配一行的colA和另一行的colB。
1. 找出所有符合条件的行对(含双方ID)
假设你的表名为your_table,执行以下SQL语句:
SELECT t1.id AS id_from_colA_row, t1.colA, t2.id AS id_from_colB_row, t2.colB FROM your_table t1 JOIN your_table t2 ON t1.colA = t2.colB WHERE t1.id != t2.id; -- 排除同一行的自匹配,不需要可移除
t1和t2是同一张表的别名,分别代表“持有colA的行”和“持有匹配colB的行”- 保留
WHERE条件可以避免同一行中colA和colB相等时的无效匹配
2. 仅获取存在匹配的行(不展示匹配行详情)
如果只需要找出有对应匹配行的那些记录,用EXISTS子查询更高效:
SELECT id, colA, colB FROM your_table t1 WHERE EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.colB = t1.colA AND t1.id != t2.id -- 按需决定是否保留 );
内容的提问来源于stack exchange,提问作者Michail99
相关产品推荐
相关产品推荐

