首页 > 解决方案 > SQL/Oracle 仅返回第二列中具有相同值的字段

问题描述

仅当在重复日志的第 2 列中找到相同的值时才需要返回第 1 列。如果看到任何其他值,则从结果中排除。

A   2
A   2
A   2
A   2
A   2

排除

B   2
B   1
B   2
B   3
B   2


 select b. column1 
    from 
    ( select * 
      from table 
      where column2 != 1

    ) b
  where b.column2 = 2 

结果:

A

标签: sqloracle

解决方案


您可以使用聚合和HAVING

SELECT col1
FROM tab
GROUP BY col1
HAVING COUNT(DISTINCT col2) = 1;

或者如果您需要原始行:

SELECT s.*
FROM (SELECT t.*, COUNT(DISTINCT col2) OVER(PARTITION BY col1) AS cnt
      FROM tab t) s
WHERE s.cnt = 1;

推荐阅读