首页 > 解决方案 > SQL - 按两个匹配的列和一个不同的列过滤

问题描述

下面我创建了一个示例表来反映我面临的问题。我试图弄清楚如何收集包含两条匹配数据和一条不同的数据。在这种情况下,我只想找到具有匹配日期和匹配组号的信息,同时具有不同的语言选项。如果日期匹配但组不匹配,则应将它们排除在结果之外,并且如果所有三个(组、日期、语言)都匹配,则可以这样说。

示例表:

姓名 | 集团 | 日期 | 语言
安妮 3 1/1/21 zh
约翰 3 2/4/21 zh
凯尔 2 1/1/21 es
杰克 3 21 年 3 月 8 日
斯泰西 1 5/9/21 FR
迈克 2 3/3/21 FR
保罗 2 1/1/21 FR
布赖恩 1 5/9/21 zh
马克 3 1/1/21 zh

期望的输出:

姓名 | 集团 | 日期 | 语言
凯尔 2 1/1/21 es
保罗 2 1/1/21 FR
斯泰西 1 5/9/21 FR
布赖恩 1 5/9/21 zh

标签: sqloracle

解决方案


我认为这个查询可以做到

SELECT NAME, GROUP, DATE, LANGUAGE
FROM Table t1
WHERE EXISTS (SELECT 1 FROM Table t2 
              WHERE t1.DATE = t2.DATE 
                   AND t1.GROUP = t2.GROUP 
                   AND t1.LANGUAGE != t2.LANGUAGE)

推荐阅读