首页 > 解决方案 > 如何找到存在于许多表中的列的公共值

问题描述

我在 oracle DB 中有很多表。所有表都有一个名为“COLUMN_FILTER”的公共列。所有表都有很多唯一的“COLUMN_FILTER”值。有没有办法找到所有表中存在的 'COLUMN_FILTER' 的公共记录?有关示例,请参阅以下场景,其中我为“COLUMN_FILTER”提供了唯一值。

     Table A: 'X','Y','Z'
     Table B: 'W','X'
     Table C: 'Z'
     Table D: 'Y','Z'

我期望输出是'Z','W'(任何可能的最小集)。这样我就可以将此过滤器放在所有表上。

标签: sqloracle

解决方案


与该列一起使用HAVING COUNT(*)>1子句GROUPBY

SELECT column_filter
  FROM
  (
  SELECT column_filter FROM tableA
  UNION ALL
  SELECT column_filter FROM tableB
  UNION ALL
  SELECT column_filter FROM tableC
  UNION ALL
  SELECT column_filter FROM tableD
  )
 GROUP BY column_filter
HAVING COUNT(*)>1

推荐阅读