基于ORIGINAL_SAMPLE字段的样本两两唯一匹配SQL查询优化需求
优化SQL查询实现样本两两唯一配对
要解决重复配对的问题,核心是把双向不等比较改成单向大小比较,确保同原始样本下的每个样本对仅出现一次。优化后的查询语句如下:
select s1.SAMPLE_NUMBER as firstSamp, s2.SAMPLE_NUMBER as secSamp from SAMPLE s1, SAMPLE s2 where s1.SAMPLE_NUMBER > s2.SAMPLE_NUMBER -- 替换不等号为大于号,避免双向重复配对 and s1.ORIGINAL_SAMPLE = s2.ORIGINAL_SAMPLE and s2.SAMPLE_NAME = 'DUP' and s1.SAMPLE_NUMBER in (69672,69675,69676,69690,69688) order by s1.SAMPLE_NUMBER desc
关键改动说明
- 将
s1.SAMPLE_NUMBER <> s2.SAMPLE_NUMBER改为s1.SAMPLE_NUMBER > s2.SAMPLE_NUMBER:这样只会生成编号大的样本在前、编号小的在后的唯一配对,不会出现反向的重复记录(比如不会同时出现69672-69675和69675-69672)。 - 保留原有业务条件:确保配对的样本属于同一个原始样本、s2是重复样本(DUP)、s1在指定样本列表内。
如果需要让编号小的样本在前,只需把>换成<即可。
内容的提问来源于stack exchange,提问作者hg05
相关产品推荐
相关产品推荐

