Oracle SQL如何找出哪个表有以下两列?

时间:2011-07-12 01:49:40

标签: sql oracle

我知道一个声明,我可以发布以找出我正在寻找的列的表:

SELECT DISTINCT(table_name)
  FROM all_tab_cols 
 WHERE column_name = 'EMP_ID';

但是,我应该如何修改此设置,以便找到既有EMP_ID又有EMP_NAME的表?

1 个答案:

答案 0 :(得分:11)

使用:

  SELECT table_name
    FROM all_tab_cols 
   WHERE column_name IN ('EMP_ID', 'EMP_NAME')
GROUP BY table_name
  HAVING COUNT(DISTINCT column_name) = 2

计数比较必须等于IN子句中定义的参数数量。

...但是这是一种更安全的方法来确定表格,以防它们是重复的:

  SELECT table_name
    FROM all_tab_cols 
   WHERE column_name IN ('EMP_ID', 'EMP_NAME')
GROUP BY table_name, owner
  HAVING COUNT(column_name) = 2