【发布时间】:2019-10-21 00:28:16
【问题描述】:
主要任务是从现有表中获取子表(如果这不是完全正确的术语,请道歉),其中只保留了几行感兴趣的行。本质上,感兴趣的行是任何这样的行,其元素在任何其他行的任何其他元素中具有相同的值。
任何解决此问题的最佳方法的解释或帮助都会非常有帮助。
我考虑过执行查询来检查每一行中的每个元素,然后简单地对所有查询结果进行联合。
这是我尝试的基本方法,尽管它可能效率低下。请注意,有 3 列,我实际上只检查 2 列中的重复值(PARTICIPANT_1、PARTICIPANT_2)。
SELECT * FROM
(
team_table
)
WHERE PARTICIPANT_2 in (SELECT PARTICIPANT_2
FROM
(
select startdate, PARTICIPANT_1, PARTICIPANT_2
from team_table
)
GROUP BY PARTICIPANT_2
HAVING COUNT(distinct PARTICIPANT_1) > 1
)
UNION
SELECT * FROM
(
team_table
)
WHERE PARTICIPANT_1 in (SELECT PARTICIPANT_1
FROM
(
select startdate, PARTICIPANT_1, PARTICIPANT_2
from team_table
)
GROUP BY PARTICIPANT_1
HAVING COUNT(distinct PARTICIPANT_2) > 1
)
以表格为例:
startdate PARTICIPANT_1 PARTICIPANT_2
1-1-19 A B
1-1-19 A C
1-1-19 C D
1-1-19 Q R
1-1-19 S T
1-1-19 U V
应该产生以下,因为 A 和 C 是重复的元素
startdate PARTICIPANT_1 PARTICIPANT_2
1-1-19 A B
1-1-19 A C
1-1-19 C D
【问题讨论】:
标签: sql oracle duplicates