MySQL查询需求:如何排除指定数据对获取目标结果
解决MySQL排除特定数据对的查询方法
嘿,这事儿好办!你需要从表中排除指定的两组(first_id, second_id)数据对,这里有几种简单直接的写法:
方法一:使用NOT IN结合行构造器
这是最直观的写法,直接把要排除的行对放在NOT IN里:
SELECT first_id, second_id FROM your_table_name WHERE (first_id, second_id) NOT IN ((1, 2), (2, 3));
注意:记得把your_table_name替换成你实际的表名哦!
方法二:使用多个条件的否定
如果你的MySQL版本偏旧(不支持行构造器语法),可以用AND组合多个否定条件:
SELECT first_id, second_id FROM your_table_name WHERE NOT (first_id = 1 AND second_id = 2) AND NOT (first_id = 2 AND second_id = 3);
这种写法兼容性拉满,老版本MySQL也能正常运行。
方法三:使用NOT EXISTS
要是你需要排除的行对特别多,或者要关联其他表逻辑,NOT EXISTS会更灵活:
SELECT t.first_id, t.second_id FROM your_table_name t WHERE NOT EXISTS ( SELECT 1 FROM ( SELECT 1 AS first_id, 2 AS second_id UNION ALL SELECT 2, 3 ) excluded WHERE excluded.first_id = t.first_id AND excluded.second_id = t.second_id );
把要排除的数据放在子查询里,后续新增排除项直接加UNION ALL就行。
执行上面任意一种查询,都能得到你想要的结果:
first_id second_id
1 3
1 4
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

