如何查找article与type相同但date不同的数据库记录
筛选article与type相同但date不同的记录方案
嘿,这问题很常见,我给你两种实用的SQL解决思路,都能精准得到你想要的结果:
方法一:子查询关联法
先找出那些article和type组合下存在多个不同date的分组,再关联原表获取完整记录:
SELECT t.* FROM your_table t INNER JOIN ( -- 先筛选出有至少两个不同date的article+type组合 SELECT article, type FROM your_table GROUP BY article, type HAVING COUNT(DISTINCT date) > 1 ) valid_groups ON t.article = valid_groups.article AND t.type = valid_groups.type;
方法二:窗口函数法
用窗口函数直接给每一行标记其所属分组的不同date数量,再筛选符合条件的行:
SELECT article, type, date FROM ( SELECT *, -- 计算当前article+type组合下的不同date总数 COUNT(DISTINCT date) OVER (PARTITION BY article, type) AS distinct_date_count FROM your_table ) filtered_rows WHERE distinct_date_count > 1;
验证效果
用你提供的测试数据:
article type date
apple fruit 20180120
apple fruit 20180119
banana fruit 20180120
banana fruit 20180120
这两种方法都会返回:
apple fruit 20180120 apple fruit 20180119
完美符合你的需求~
内容的提问来源于stack exchange,提问作者user8957934
相关产品推荐
相关产品推荐

