SQL技术问询:选取C1&C2组合值唯一且C3值不同的记录,指定R2/R3的Item1
嘿,这两个SQL需求我帮你梳理清楚啦,直接上解决方案:
1. 选取C1与C2组合对应C3值不同的记录
先确认下需求逻辑:你应该是想找出那些同一C1+C2组合下,对应C3值存在差异的所有记录吧?毕竟如果C1+C2组合本身是唯一的(全局只出现一次),那不可能对应不同的C3值,所以我按更合理的业务场景来实现:
实现思路是先定位符合条件的C1+C2组合,再拉取这些组合的完整记录:
-- 替换成你的实际表名 SELECT t.* FROM your_table t INNER JOIN ( -- 子查询找出所有有不同C3值的C1+C2组合 SELECT C1, C2 FROM your_table GROUP BY C1, C2 HAVING COUNT(DISTINCT C3) > 1 ) AS valid_pairs ON t.C1 = valid_pairs.C1 AND t.C2 = valid_pairs.C2;
如果你的“组合值唯一”是其他意思(比如有特殊的唯一性约束),随时补充场景细节,我再调整语句~
2. 从R2和/或R3中选取Item 1
这里的“和/或”对应不同的业务场景,给你几个常用的实现方式:
- 要保留两个表中所有Item 1(包括重复项):
SELECT Item_1 FROM R2 -- 可以加过滤条件,比如 WHERE Item_1 = '目标值' UNION ALL SELECT Item_1 FROM R3;
- 要去重,只保留唯一的Item 1:
SELECT Item_1 FROM R2 UNION SELECT Item_1 FROM R3;
- 要取同时存在于R2和R3中的Item 1:
SELECT r2.Item_1 FROM R2 r2 INNER JOIN R3 r3 ON r2.Item_1 = r3.Item_1;
内容的提问来源于stack exchange,提问作者PJ Reefer
相关产品推荐
相关产品推荐

